Клуб API Карт

добавить элемент на карту

TomTykver
11 мая 2015, 10:35

Добрый день. Подскажите, пожалуйста: вывожу на экран карту яндекс

<div id="map"> </div>


в js определяю переменную myMap 

1var myMap = new ymaps.Map('map', {
2                    center: [50.3443, 30.5025],
3                    zoom: 14
4                });


В ходе работы программы хочу добавить элемент на карту

myMap.geoObjects.add(polyline);


разумеется ошибка: переменная myMap не определена.
Подскажите каким образом получить доступ к myMap ? Делаю так:
myMap = document.getElementById('map'); - ошибка. Почему ? Как обратиться к карте что бы добавить элемент ?

6 комментариев
Подписаться на комментарии к посту

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#Function_scope

 

 

myMap = document.getElementById('map'); - ошибка. Почему ? Как обратиться к карте что бы добавить элемент ?

Есть DOM-элементы и есть экземпляры класса, никакой связи между ними нет.

Желательно понимать основы языка и окружения в котором вы пишете, иначе дальше копирования примеров продвинуться не получится.

Сделать переменную myMap глобальной ? Понял. Спсибо большое.

Глобальные переменные это плохо.

Есть много разных способов.

Лучшим решением будет, например, передать myMap в вызов функции параметром.

function addPolylineToMap(map) {

   map.geoObjects.add(polyline);

}

и вызвать ее там где myMap видна

addPolylineToMap(myMap);

"и вызвать ее там где myMap видна

addPolylineToMap(myMap);" 

Да, но она видна только в одном месте: function init (). А function init () у меня срабатывает сразу при загрузке страницы.

Посоветуйте пожалуйста удобный способ. Передавать в параметре из места видимости myMap - это значит передавать из места инициализации переменной myMap, а это не подходит так как карта инициализируется и загружается на страницу при старте, а map.geoObjects.add(polyline) мне нужно сделать после работы некоторого кода.

вобщем сделал глобальной переменной. Хоть расстреляйте