我所做的是访问Google地图中的某个位置(通过搜索或只是拖动地图)。现在我在地址栏中输入另一个URL并点击return返回该站点。
当我使用浏览器后退按钮时,Google地图会自动切换回我上次所在的位置。
如果我拖动地图并且没有在Google地图网站上使用某种“POST”,这怎么办?我想在我自己的谷歌谷歌地图应用程序中有相同的行为。
我正在使用Google Maps API for JavaScript v3
答案 0 :(得分:1)
我不知道GMaps是否有方便的方法,但通常这样的功能基于HTML5 history.pushState()
,它允许您向导航历史记录添加自定义步骤,并观察用户何时导航回来:
https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history
如果您希望以这种方式处理更高级的应用程序状态,则可以在其上构建多个框架,例如: Backbone router,LeviRoutes。
在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
希望这会对你有所帮助。