浏览器后退按钮跳转到上一个位置(如maps.google.com)

时间:2012-03-23 15:24:37

标签: google-maps google-maps-api-3

我所做的是访问Google地图中的某个位置(通过搜索或只是拖动地图)。现在我在地址栏中输入另一个URL并点击return返回该站点。

当我使用浏览器后退按钮时,Google地图会自动切换回我上次所在的位置。

如果我拖动地图并且没有在Google地图网站上使用某种“POST”,这怎么办?我想在我自己的谷歌谷歌地图应用程序中有相同的行为。

我正在使用Google Maps API for JavaScript v3

2 个答案:

答案 0 :(得分:1)

我不知道GMaps是否有方便的方法,但通常这样的功能基于HTML5 history.pushState(),它允许您向导航历史记录添加自定义步骤,并观察用户何时导航回来:

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

如果您希望以这种方式处理更高级的应用程序状态,则可以在其上构建多个框架,例如: Backbone routerLeviRoutes

在HTML4浏览器中,pushState可以是emulated with fragment identifiers(哈希网址)。

答案 1 :(得分:0)

首先,您只需在地图上查找名为“ dragend ”的活动

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

});

然后,您需要使用 getCenter ()获取坐标并将浏览器重定向到“#coordinates”,因为您在使用哈希时不会重新加载窗口,但它会将其保存在历史记录中。

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

现在你需要添加监听器来检查URL中的任何“哈希”更改(假设你有jQuery)

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

最后,您需要告诉地图更改坐标并解码网址

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

您可以使用 setCenter ()代替 panTo (),但在点击“返回”按钮时会添加一些不错的动画。

很容易更改此代码以使用搜索到的位置,您可以使用“ center_changed ”代替“ dragend ”,它将处理所有内容。

我写的所有内容都包含在这里:

  

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

希望这会对你有所帮助。