Javascript 使用谷歌地图API从本地存储将坐标加载到谷歌地图
当用户单击一个按钮时,它将不断刷新其位置并将其按入数组,最后当用户单击另一个按钮时,它将显示从单击开始按钮开始的路径:Javascript 使用谷歌地图API从本地存储将坐标加载到谷歌地图,javascript,jquery,html,google-maps,Javascript,Jquery,Html,Google Maps,当用户单击一个按钮时,它将不断刷新其位置并将其按入数组,最后当用户单击另一个按钮时,它将显示从单击开始按钮开始的路径: var refreshIntervalId = setInterval(recordtrip, 5000); function recordtrip(){ if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position){ x
var refreshIntervalId = setInterval(recordtrip, 5000);
function recordtrip(){
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position){
x = position;
triplog.push(new google.maps.LatLng(x.coords.latitude,x.coords.longitude));
$('#stoptrip').click(function(){
clearInterval(refreshIntervalId);
});
});
$('#showtrip').click(function(){
var lenoftrip = triplog.length - 1 ;
var mapProp = {
center:triplog[lenoftrip],
zoom:20,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
var marker=new google.maps.Marker({
position:triplog[lenoftrip],
});
marker.setMap(map);
var flightPath=new google.maps.Polyline({
path:triplog,
strokeColor:"#0000FF",
strokeOpacity:0.8,
strokeWeight:2
});
flightPath.setMap(map);
});
它在保存到localstorage之前运行良好,但在保存并加载之后,就不再工作了。
我意识到,当我从localstorage调用该数组时,它会删除新的google.maps.LatLng。
这是保存功能:
$('#savetrip').click(function(){
localStorage.setItem(titleoftrip,JSON.stringify(triplog));
alert("Saved!");
triplog = [];
}
如何解决此问题?如果答案有点混乱,很抱歉,但我解决了我遇到的问题: 我意识到问题在于它在解析数据时出错。我认为这是因为我保存了数组
triplog
,其中存储的每个数据都是新的google.maps.LatLng(x.coords.latitude,x.coords.longitude)
。
因此,我创建了一个新数组triplogsave
,它只存储x.coords.latitude,x.coords.longitude
,并将其保存到localStorage,当我调用并解析它时,它运行正常,没有任何错误。
编辑的代码为:
var triplog =[];
var triplogsave = [];
var refreshIntervalId = setInterval(recordtrip, 5000);
function recordtrip(){
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position){
x = position;
triplog.push(new google.maps.LatLng(x.coords.latitude,x.coords.longitude));
triplogsave.push(x.coords.latitude,x.coords.longitude);
$('#stoptrip').click(function(){
clearInterval(refreshIntervalId);
});
});
$('#showtrip').click(function(){
var lenoftrip = triplog.length - 1 ;
var mapProp = {
center:triplog[lenoftrip],
zoom:20,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
var marker=new google.maps.Marker({
position:triplog[lenoftrip],
});
marker.setMap(map);
var flightPath=new google.maps.Polyline({
path:triplog,
strokeColor:"#0000FF",
strokeOpacity:0.8,
strokeWeight:2
});
flightPath.setMap(map);
});
$('#savetrip').click(function(){
localStorage.setItem(titleoftrip,JSON.stringify(triplog));
alert("Saved!");
triplog = [];
}
因此,在保存和加载之后,它将加载triologsave而不是Trilog,解析它并将该数组加载到google地图中。您将数据存储在本地存储器的何处?我相信,当您将内容存储到localstorage中时,值会转换为字符串,即使true/false也会变成“true”/“false”。如果是这样,那么您应该使用
JSON.parse()
方法将对象从字符串解析回对象。@kaho抱歉!我把它添加到问题中,我正在解析它。