如果这是一个明显的问题,请提前道歉。我已尽可能多地进行搜索,因为我可以将此问题放入搜索术语中。
我有以下代码块,如果之前没有添加过一个“转发器”,它应该为每个“转发器”创建一个Google地图标记。但是,每次运行此代码块时,它都不会检测存储在发送应答器对象中的先前创建的标记并重新创建它。
尽管在Firebug的DOM视图中看到了转发器对象中的标记。
function addOrUpdateTransponderPostionRpt(transponderPositionRpt) {
var t = getTransponderById(transponderPositionRpt.TransponderId);
if (t) {
console.log("Found Transponder: " + t.Id);
if (t.gMapMarker) {
console.log("Transponder has existing marker, updating: " + t.Id);
moveMarker(t.gMapMarker, new google.maps.LatLng(transponderPositionRpt.Latitude, transponderPositionRpt.Longitude));
} else {
console.log("Transponder has no existing marker, creating: " + t.Id);
var marker = new google.maps.Marker({
position: new google.maps.LatLng(transponderPositionRpt.Latitude, transponderPositionRpt.Longitude),
map: map,
title: t.DefaultNickname
});
t.gMapMarker = marker;
}
}
}
从javascript调试输出(每次都相同)
有人可以帮忙吗? :)
编辑:此代码块中引用的其他方法:
function getTransponderById(id) {
var ret;
$.each(transponders, function (i, item) {
if (transponders[i].Id == id) {
ret = transponders[i];
return;
}
});
return ret;
}
function moveMarker(marker, newPosition) {
marker.setPosition(newPosition);
}