Помните состояние Google Maps v3 - PullRequest
       29

Помните состояние Google Maps v3

1 голос
/ 18 февраля 2011

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

Первый вопрос: могу ли я каким-то образом сохранить все состояние карты;оверлеи и все такое?

На данный момент я сохранял широты / долготы и масштабирование, а затем воспроизводил все оверлеи KML, но даже не добился успеха.Я сохраняю куки на измененных границах или событиях выгрузки окна, но проблема заключается в загрузке сохраненных значений.причина в том, что карта загружается асинхронно.Я пытался использовать событие простоя карты, но оно срабатывает не раз.Кажется, чтобы запустить, запустить мой код в обработчике, а затем снова запустить, когда он закончил мой код.Бесконечный цикл?В любом случае, воспроизведение наложения KML полностью переопределяет независимо от того, какой широта / долгота / масштаб был указан.

Итак, главный вопрос: как восстановить сохраненную карту со всеми ее наложениями?

1 Ответ

2 голосов
/ 18 февраля 2011

Я не думаю, что Google Maps может сохранить состояние карты, вы должны сделать это самостоятельно.

Вы правильно использовали событие ожидания, чтобы инициировать наложения. Событие бездействия запускается каждый раз, когда карта становится бездействующей после масштабирования или панорамирования, поэтому, если вы хотите, чтобы один раз прослушиватель события бездействия (или любого другого события), вы могли сделать это следующим образом:

var map = new google.maps.Map(document.getElementById("map"), myOptions); 
var initListener = google.maps.event.addListener(map, 'idle', function() {
    // do your code here
    google.maps.event.removeListener(initListener);
});

Если вы хотите сохранить масштаб и центр карты после загрузки kml, вы должны использовать опцию KmlLayer preserveViewport:

var kmlLayer = new google.maps.KmlLayer( myKml.kml, {preserveViewport: true});
...