Клуб API Карт

Выполнить код после инициализации карты

spiritabsolute
3 апреля 2014, 17:43

Привет! Подскажите, как выполнить код после инициализации карты.

Написал вот такой код

var visibleObject = myobjects.searchInside(myMap);

if(visibleObject.getLength()==0) {

    myMap.setZoom(6);

}

Он находит объекты в видимой области карты, и изменяет зум, если объектов нет. Он выполняется только после того как карта создана, например по клику.

Как сделать так, чтобы он сработывал сам после загрузки карты.

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

вызывайте его в обработчике ymaps.ready

А где писать его? В функции инициализации или нет?

Если писать в функции вот так 

ymaps.ready(function(){

var visibleObject = myobjects.searchInside(myMap);

if(visibleObject.getLength()==0) {

myMap.setZoom(6);

}

});

страница просто виснет, а если вне функции, то не находит myobjects.

Каким способом нужно инициализировать карту, чтобы в этом обработчике сработал мой код? Пробовал создание карты просто через функцию init() , а затем вывоз ее ymaps.ready(init), так и просто сам вывозв карты в ymaps.ready(function(){

Вам надо почитать про замыкания и область видимости в javascript

Я написал функцию внутри функции инициализации таким образом.

var func = function() {

var visibleObject = myobjects.searchInside(myMap);

if(visibleObject.getLength()==0) {

myMap.setZoom(6);

}

}

и все равно никаким способом не получается ее вызввать именно после загрузки карты...

где у вас код создания карты?

Создайте пример с вашим кодом на jsfiddle.net и запостите тут ссылку

вы создали функцию func

где вы ее вызываете?

 

 

я пробовал ее вызывать вне функции инициализации window.onload = function() {func(); } таким образом, просто func(); вне функции в общем js скрипте, через ymaps.ready(func); просто в функции инициализации func(); + все тоже самое возвращая функцией инициализации через rerurn func;

и ни как не получилось! :(

Надо все-таки понимать что и зачем вы делаете, а не просто чтото куда-то добавлять наугад.

У вас myobjects это объекты, которые вы получаете запросом за geoXml, они загружаются асинхронно. там где они загружаются и надо вызывать этот код

Спасибо, понял!