我有一个从数据库获取坐标的函数和一个设置标记(setMarker()
)的函数。我使用setInterval(setMarker())
检查数据库,如果位置已更改,则通过调用setMarker()
更新标记。
我是第一次创建标记而不是更新标记时检查它是否是{I} markerArray[i].setMap(null)
。我第二次进入循环时尝试设置为null。但是我收到一条错误,说markerArray
未定义。
检查在foreach
循环内完成,循环必须循环到(位置坐标数)的长度,然后我设置为null。
function setMarker(){
var markerArray = [];
latArray.forEach(function(lat, i) {
// marker = new google.maps.Marker();
var infoWindow = new google.maps.InfoWindow({
content: '<div id="content>' + '<p style="color:#000000">DeviceID:<p>' + '<p>' + deviceId[i] + '</p>' + '</div>'
});
if(markerCount >(latArray.length)) //check if marker is created for first time,if not, set to null
{
//console.log("!------------------");
//console.log(marker);
}
else{ //if first time, increment so that next time marker can be set to null to create new marker in new position
markerCount++;
console.log("else"+markerCount);
}
var marker = new google.maps.Marker({
map: map,
mapTypeId: google.maps.MapTypeId.ROADMAP,
//position: new google.maps.LatLng(latArray[i], lngArray[i]),
icon: "phone6.png"
});
markerArray.push(marker);
//console.log(markerArray[i]);
markerArray[i].setPosition(new google.maps.LatLng(latArray[i],lngArray[i])); //marker undefined here
markerArray[i].addListener("click", function() {
infoWindow.open(map, marker);
//marker.setMap(null);
});
});
}
答案 0 :(得分:0)
尝试使用如下的唯一ID标记索引标记...
var getMarkerUniqueId = function(lat, lng) {
return lat + '_' + lng;
};
然后你可以追踪特定的标记..