2015-07-10 135 views
0

如何將localStorage合併到我的代碼中?我在我的谷歌地圖上有一個隱藏和顯示標記數組的顯示和隱藏按鈕。當按鈕被點擊時,我需要將值存儲在localStorage中。Google地圖標記的本地存儲

我有什麼至今:

var testbtn = document.getElementById('test1'); 
var testbtn2 = document.getElementById('test2'); 
google.maps.event.addDomListener(testbtn, 'click', hide); 
google.maps.event.addDomListener(testbtn2, 'click', show); 

function hide() { 
    set_speed_camera(null); 
    localStorage.setItem("hide_speed_camera", "true");  
} 

function show() { 
    set_speed_camera(map); 
    localStorage.setItem("show_speed_camera", "true"); 
} 

$(document).ready(function(e) { 
    if(JSON.parse(localStorage.getItem("show_speed_camera"))) { 
     set_speed_camera(map); 
     alert('testing..Show')  
    } 
}); 

$(document).ready(function(e) { 
    if(JSON.parse(localStorage.getItem("hide_speed_camera"))) { 
     set_speed_camera(null); 
     alert('testing..Hide') 
     localStorage.removeItem('hide_speed_camera'); 
    } 
}); 

回答

0

你有一個明顯的問題,這是您正在使用localStorage.getItem得到字符串化布爾值。相反,抹上JSON.parsegetItem

var testbtn = document.getElementById('test1'); 
var testbtn2 = document.getElementById('test2'); 
google.maps.event.addDomListener(testbtn, 'click', hide); 
google.maps.event.addDomListener(testbtn2, 'click', show); 


function hide() {  
    set_speed_camera(null); 
    localStorage.setItem("hide_speed_camera", "true"); 
} 

function show() { 
    set_speed_camera(map); 
    localStorage.setItem("show_speed_camera", "true"); 
} 
if(JSON.parse(localStorage.getItem("show_speed_camera"))) {  
    set_speed_camera(map); 
} 
if(JSON.parse(localStorage.getItem("hide_speed_camera"))) { 
    set_speed_camera(null); 
} 

> Boolean("true") 
true 
> Boolean("false") 
true 

因此,除非你使用一個JSON.parse,在getItem的結果總是true

+0

好吧我把它加入localStorage.clear工作();這兩個功能,這是正確的方式?有更新的問題。 –

0

localStorage將所有東西都存儲爲字符串。您需要檢查當前設置的字符串形式。

if(localStorage.getItem("show_speed_camera") === "true") { 
    set_speed_camera(map);  
} 

if(localStorage.getItem("hide_speed_camera") === "true") { 
    set_speed_camera(null); 
} 

此外,你有兩個stringified布爾值控制相同的功能。也許不是既具有show_speed_camera並存儲在localStorage的一個hide_speed_camera,只是有一個showing_speed_camera,像這樣:

function hide() { 
     set_speed_camera(null); 
     localStorage.setItem("showing_speed_camera", "false");  
} 

function show() { 
     set_speed_camera(map); 
     localStorage.setItem("showing_speed_camera", "true"); 
} 


if(localStorage.getItem("showing_speed_camera") === "true") { 
    set_speed_camera(map);  
} 

if(localStorage.getItem("hide_speed_camera") === "false") { 
    set_speed_camera(null); 
} 
+0

是的,我似乎無法得到它的工作。 –