2017-06-01 25 views
0

我正在構建使用Google地圖的跟蹤應用程序,因此用戶可以點擊多個標記。該頁面最終會每15分鐘刷新一次以跟上最新的跟蹤數據。不過,我希望即使在頁面刷新後用戶仍然堅持選定的標記,因此如果需要,他們可以跟隨選定的車輛(標記所代表的)。如何在頁面刷新後保持對選定標記的縮放?

我試圖用本地存儲來實現這一點。我可以在存儲器中獲得經緯度,沒有問題,但是當我把它拿出來時,我發現經度已經出現了太多的小數位,所以API不會識別這個位置。

要轉到標記後刷新我的代碼是這樣的:

var centre = {lat: 53.806590, lng: -1.548437}; 
var centreRefresh = localStorage.getItem("markerPos"); 
// Draw the map 
var map = new google.maps.Map(document.getElementById('map'), { 
    zoom: 6, 
    center: centre 
}); 
if (centreRefresh != null && $("#zoomRefresh").is(':checked')) { 
    map.setZoom(8); 
    map.setCenter(centreRefresh); 
} 

而且填補了本地存儲我有這樣的:

// Add Info Window to Marker 
marker.addListener('click', function() { 
    infowindow.open(map, marker); 
    if ($("#zoomRefresh").is(':checked')) { 
    markerPos = marker.getPosition(); 
    localStorage.setItem("markerPos", markerPos); 
    } 
    map.setZoom(8); 
    map.setCenter(marker.getPosition()); 
}); 

在控制檯的optput從即設置在本地存儲是"(55.823772, -2.8525829999999814)"和錯誤消息是InvalidValueError: setCenter: not a LatLng or LatLngLiteral: not an Object有沒有更好的方法來做到這一點,因爲這種方法似乎沒有正常工作?

+0

[請不要把問題標題標籤(https://stackoverflow.com/help/tagging) – Liam

+0

可能的複製[頁面重新加載時的全局變量使用情況](https://stackoverflow.com/questions/29986657/global-variable-usage-on-page-reload) – Liam

+0

不是問題不在於存儲 - 它與輸出格式getPosition –

回答

-1

您正試圖在本地存儲器中存儲LatLng對象。我不確定蘋果/谷歌,但MozillaMicrosoft似乎只支持字符串鍵/值對。

你最好的選擇是在存儲之前對JSON.stringify進行處理,然後在檢索到可以使用的數據時進行解析。

編輯:剛剛搜索S/O,它似乎是真的(Storing Objects in localStorage

+0

你可以給我一個相對於我的代碼的例子嗎?也將修復多個小數位的問題? –

+0

我不認爲小數點是一個問題。 –

+0

不起作用 - 出現JSON語法錯誤 - 未捕獲SyntaxError:意外的標記(位於位置0的JSON中 - 這必須由輸出中的括號引起 –

相關問題