Клуб API Карт

проблема с порядоком выполнения кода

Пост в архиве.

 есть код

myMap.panTo([Office], {flying: true});
myMap.balloon.open([Office], {content: "<?=$name?>" }, {closeButton: false,autoPan:true});

то есть должно сначала сработать перемещение карты а потом уже нарисоваться балун, у меня же происходит наоборот.

сначала ставиться балун (причем не там где нужно) и потом уже идет перемещение

 

в чем может быть причина? 

 

 

код теперь стал таким:

  myMap.panTo([Office], {delay: 0, flying:true, callback: function () {
        myMap.balloon.open([Office], {content: "<?=$name?>" }, {closeButton: false,autoPan:true});
}});

 если flying:false то вообще не работает

21 комментарий

Поскольку вы включили опцию flying, движение карты не будет происходить синхронно. Чтобы выпонить какое-то действие гарантированно после окончания движения карты, используйте callback-функцию.

Пример с использованием функции можно посмотреть в документации.

Sergey Konstantinov
28 января 2016, 03:53
А какого эффекта вы ожидаете? Вы вызываете функцию анимации полёта, и, не дождавшись даже начала анимации, открываете балун.
сначала ставиться балун (причем не там где нужно) и потом уже идет перемещение

ну насчет этого советую посмотреть как вы передаете значения myMap.panTo([Office].... Там может быть проблема. Наверное в Office там строка... вот оно и бросает Вас в Африку...

Office содержит координаты из геолокатора строки, координаты верные, да и к тому же в итоге все встает на место, 

пробовал в параметрах поставить flying:false карта вообще перестала перемещаться хотя в доке написано что переместиться мгновенно

У вас есть ссылка на пример? По симптомам похоже, что значение переменной Office не то, что надо.

Сейчас происходит flying, и открывается балун. Что не так?

хотел сделать мгновенное перемещение

  

щас flying:false и ниче не работает

Действительно, без опции flying не перемещается. Поправим к следующему релизу. Пока попробуйте такой вариант:

myMap.panTo([Office], {

    flying: true,

    delay: 0,

    duration: 0 

});

 

Спасибо за сообщение.

а когда ждать следующий релиз? )

 

duration: 0 помогло, спасибо! 

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

спасибо за помощь

Sergey Konstantinov
28 января 2016, 03:53
Мгновенное перемещение - map.setCenter()
.panTo предназачена для плавных движений.

map.setCenter() кстати тож глючит,

 

myMap.setCenter([Office], 10,{
callback: function () {
myMap.balloon.open([Office], {content: "" }, {closeButton: false,autoPan:true});
}
});

в результате карта загружается не полностью, два куска по краям не прогружаются, и перемещение не сработало

Sergey Konstantinov
28 января 2016, 03:53
А зачем у вас стоят квадратные скобки вокруг Office?

во первых в манах так написано, а во вторых чтоб он порядок параметров не перепутал: там же две координаты передается

Sergey Konstantinov
28 января 2016, 03:53
В переменной Office что находится?
Если она сама по себе массив из двух координат, то, обернув её в дополнительные скобки, вы создали двумерный массив.

там пара чисел через запятую

это как?

я не понимаю, что трудно убрать квадратные скобки и посмотреть правы модеры или нет, зачем куча вопросов?)

Office=point.geometry.getCoordinates() - отдает массив
myMap.setCenter(Office, 10,{
callback: function () {
myMap.balloon.open(Office, {content: "" }, {closeButton: false,autoPan:true});
}
});

и уберите myMap.redraw(); такого нет в апи 2.0