【发布时间】:2018-05-05 17:27:50
【问题描述】:
我得到 JSON 数据:
[
{"id":'1029',
"position":
{
"lat":'40.690902',
"long":'-73.993449'
}
}
]
然后处理数据并将每个标记添加到myMarkers 并创建一个标记,或者如果它已经存在,则更新地图上的位置:
// Remember markers
var myMarkers = {};
***// Code removed here which gets JSON via ajax //***
// Move data to res variable, just for fun..
var res = data;
// Process the data..
for(var i=0, len=res.length; i<len; i++) {
// Does this marker exist?
if(myMarkers.hasOwnProperty(res[i].id)) {
// Update position
myMarkers[res[i].id].setPosition(new google.maps.LatLng(res[i].position.lat,res[i].position.long));
} else {
// It does NOT exist, create it ..
var marker = new google.maps.Marker({
position: new google.maps.LatLng(res[i].position.lat,res[i].position.long),
map:map,
});
myMarkers[res[i].id] = marker;
}
}
到目前为止,一切都很好。现在,我遇到了 JSON 数据可能缺少一些之前创建的并且已经在地图上的项目的问题。在这种情况下,我希望它们完全从myMarkers 中删除并从地图上擦除。我无法理解如何实现这一目标。有什么建议吗?
更新:
我尝试了以下方法来“反转”该过程,但它似乎不起作用,即使它是有意义的(至少对我而言):
for(var i=0, len=myMarkers.length; i<len; i++) {
console.log("Checking reverse..");
//Do we have this marker already?
if(data.hasOwnProperty(res[i].id)) {
console.log(res[i].id+" exists ..");
// Remove it here..
} else {
console.log(res[i].id+" does NOT exist ..");
// Do nothing
}
}
我确定我只是错了一点,但我不知道在哪里。
【问题讨论】:
标签: jquery json google-maps