Клуб API Карт

Обращение к объектам карты после инициализации. Как?

bitmag
7 сентября 2012, 17:36

Если  делать так:

 

ymaps.ready(function () {

....

map.geoObjects.add(obj); 

alert(obj.geometry.getCoordinates());

}) 

 

То все работает замечательно.

 

Но, если попытаться вызвать  alert так:

ymaps.ready(function () {

....

map.geoObjects.add(obj); 

}) ;

alert(obj.geometry.getCoordinates());  

 

Тоесть после инициализации - ничего не будет.

Вопрос: как правильно получить доступ к объектам карты после её инициализации. Перепробовал все что угодно: ymaps.map, map.... не нашел.

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

надо понимать что инициализация асинхронная (это всё-таки не php) и получить доступ к объектам можно только внутри обработчика ymaps.ready.

тоесть НИКАК? Да не верю! Это же объект, у него есть поля, методы.

Даже если сделать alert(ymaps) - он скажет [object] [object]. 

это неймспейс он приходит синхронно вместе с подключением загрузчика

основной код АПИ приходит потом (вторым запросом)

 

Это абсолютно нормальная ситуация для языка, основанного на событиях, и ни у кого, кто знает javascript, не вызывает проблем.

 

Ок. спасибо за объяснение. Мне нужно добавлять/двигать точки на карте после её загрузки. Уверен, что есть способ это делать. Не подскажешь как?

Вообще не обязательно писать весть код внутри ymaps.ready

ты можешь разделить свою логику на несколько методов и просто вызывать их внутри ymaps.ready

Для перетаскивания метки используй опцию draggable

и см. пример 

Вообще идея была по setTimeout аяксом считывать координаты новых точек и ставить их. Вот до сих пор не разобрался как это сделать...