我的地图上有一组标记,我试图通过ajax调用来更新它们的位置... ajax调用工作正常,我可以遍历新值;但是我找不到引用标记的方法(比如ID),所以我可以更新它们的latLng。
基本上我到底需要...... 1.)通过唯一ID获取对标记的引用 2.)可能遍历所有标记
提前致谢 - 我是新人,需要一点帮助才能开始 - 希望我可以在我能够的时候传递善意:)
下面的ajax代码 - 我关于修改标记位置的部分是我不知道该怎么做的部分 - 所以在下面的代码中我只是添加一个新标记,我真的需要更新位置
var json = $.getJSON("json/tracking.php",function(data){
console.log("updated");
$.each(data,function(key,value){
//console.log(value.unit + " " + value.lat + " " + value.lng);
new google.maps.Marker({
map:map,
position: new google.maps.LatLng(value.lat,value.lng),
});
});
})
.success(function(){
//console.log("success");
})
.error(function(){
//console.log("error");
})
.complete(function(){
//console.log("complete");
});
},2000);
答案 0 :(得分:1)
我倾向于在创建它们时将它们存储在一个对象数组中,并将任何其他信息(例如id)存储为对象的属性。因此,在适当的范围内创建一个标记数组(可能在json回调范围之外):
var markers = [];
var json = ...
markers.push({
id: //.. your unique id, or index
obj: new google.maps.Marker(...
});
答案 1 :(得分:0)
尝试这种方法:我假设您的JSON在订购标记时是一致的。 newData
假装是新的JSON数据,当点击地图(在标记之外)时,会提取“新数据”。
这是demo
function initialize() {
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
var data = [{unit:1, lat:0, lng:0},
{unit:2, lat:10, lng:0},
{unit:3, lat:20, lng:0}
];
var newData = [{unit:1, lat:0, lng:10},
{unit:2, lat:10, lng:20},
{unit:3, lat:20, lng:30}
];
var markers = {};
$.each(data,function(key,value){
//console.log(value.unit + " " + value.lat + " " + value.lng);
markers[key] = markers[key] || new google.maps.Marker({ map: map });
markers[key].setPosition(new google.maps.LatLng(value.lat,value.lng));
markers[key].setTitle(value.unit.toString());
});
google.maps.event.addListener(map, 'click', function() {
$.each(newData,function(key,value){
//console.log(value.unit + " " + value.lat + " " + value.lng);
markers[key] = markers[key] || new google.maps.Marker({ map: map });
markers[key].setPosition(new google.maps.LatLng(value.lat,value.lng));
markers[key].setTitle(value.unit.toString());
});
});
}