Кнопка возврата в браузере для перехода к последнему местоположению (например, maps.google.com) - PullRequest
1 голос
/ 23 марта 2012

Что я делаю, я иду в местоположение в Google Maps (либо путем поиска или просто перетаскивая карту). Теперь я ввожу другой URL в адресную строку и нажимаю клавишу возврата, чтобы перейти на этот сайт.

Когда я использую кнопку "Назад" в браузере, Google Maps автоматически переключается обратно в то место, где я был в последний раз.

Как это сделать, если я перетащил карту и не использовал какое-либо "POST" на сайте Google Maps? Мне бы хотелось, чтобы такое же поведение было в моем приложении Google Maps Google.

Я использую Google Maps API для JavaScript v3

Ответы [ 2 ]

1 голос
/ 23 марта 2012

Я не знаю, есть ли у GMaps удобный метод для этого, но обычно такая функциональность основана на HTML5 history.pushState(), который позволяет добавлять пользовательские шаги в историю навигации и наблюдать, когда пользователь возвращается назад:

https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history

Если вы хотите обрабатывать более продвинутые состояния приложений таким образом, на его основе есть несколько фреймворков, например, Магистральный маршрутизатор , LeviRoutes .

В браузерах HTML4 pushState может эмулироваться с идентификаторами фрагментов (URL-адреса хэшей).

0 голосов
/ 23 марта 2012

Прежде всего, вы просто ищете событие под названием ' dragend ' на вашей карте

google.maps.event.addListener(map, 'dragend', function() {

});

Затем вам нужно получить свои координаты с помощью getCenter () и перенаправить ваш браузер на «#coordinates», он не перезагрузит ваше окно при использовании хэша, но сохранит его в истории. 1008 *

coords = map.getCenter();
window.location = '#' + encodeURI(coords);

Теперь вам нужно добавить прослушиватель для проверки любых изменений 'hash' в URL (при условии, что у вас есть jQuery)

$(window).bind('hashchange', function () {
    var hash = window.location.hash.slice(1);
});

В конце вы должны указать своей карте, что нужно изменить координаты и декодировать URL

hash = decodeURL(hash);
map.panTo(hash);

Вместо panTo () вы можете использовать setCenter (), но при добавлении приятной анимации нажмите кнопку «Назад».

Очень легко изменить этот код для работы с вашим искомым местом, вы можете использовать событие ' center_changed ' вместо ' dragend ', и он будет обрабатывать все.

Все, о чем я писал, описано здесь:

https://developers.google.com/maps/documentation/javascript/reference#Map

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...