我所做的是我前往Google地圖中的位置(通過搜索或僅通過拖動地圖)。現在,我在地址欄中輸入另一個網址,然後按回車即可訪問該網站。瀏覽器後退按鈕跳轉到上一個位置(如maps.google.com)
當我使用瀏覽器的後退按鈕,谷歌地圖會自動切換回我最後的位置
如何做到這一點,如果我拖着地圖並沒有使用某種形式的「POST」的。在Google地圖網站上?我想在自己的Google谷歌地圖應用中擁有相同的行爲。
我使用谷歌地圖API爲JavaScript V3
我所做的是我前往Google地圖中的位置(通過搜索或僅通過拖動地圖)。現在,我在地址欄中輸入另一個網址,然後按回車即可訪問該網站。瀏覽器後退按鈕跳轉到上一個位置(如maps.google.com)
當我使用瀏覽器的後退按鈕,谷歌地圖會自動切換回我最後的位置
如何做到這一點,如果我拖着地圖並沒有使用某種形式的「POST」的。在Google地圖網站上?我想在自己的Google谷歌地圖應用中擁有相同的行爲。
我使用谷歌地圖API爲JavaScript V3
你只是看你的地圖上被稱爲「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(),但它添加一些妮點擊後退按鈕,同時播放動畫。
這是很容易改變這種代碼與您所查找的地方工作,你可以使用事件「center_changed的」而不是「dragend」,它會處理一切。
一切我寫在這裏覆蓋:
https://developers.google.com/maps/documentation/javascript/reference#Map
希望這有助於你。
我不知道是否有GMaps此便捷方法,但一般這樣的功能是基於HTML5 history.pushState()
它可以讓你添加自定義的步驟,瀏覽歷史和如果要處理更高級的應用程序狀態這樣
https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history
,還有建立在它之上,例如,幾個框架:當用戶返回觀察Backbone router,LeviRoutes。
在HTML4瀏覽器pushState
可以是emulated with fragment identifiers(哈希URL)。
感謝這一般的方法 - 我可能會用Turek指出的解決方案(和你在最後一句),但很好了解pushState()。 – NoRyb 2012-03-26 08:36:07
謝謝 - 這聽起來像是一種合理的方法,我會盡快給出反饋意見。 – NoRyb 2012-03-26 08:32:51
我開始認爲這樣做對我來說是一種非常不潔的方式。接下來的事情是,我必須存儲更多的座標,而且我不希望所有的東西在URL中都可見,並且也不需要書籤。 有趣的是,谷歌地圖也不使用Hashtags。我認爲它甚至不使用瀏覽器的歷史記錄。我不知道他們是如何做到這一點的...... – NoRyb 2012-03-26 11:18:18
實際上,您不需要在散列中存儲座標,例如可以節省城市......在這個問題中,您可以在網站上生成的某處標記數組,所以你可以將你的哈希值引用到這個信息中... – Turek 2012-03-26 20:29:59