我制作了一个与javascript集成的html文件,它允许我检索XML文件的数据并自动将它们绘制到地图上。这样做是因为我在脚本中放置了一个定时器,每隔4秒打勾一次,以便地图可以自行刷新。 现在我希望能够不使用' lastCoordinate'将标记放在同一个地方两次。变量,但不知道如何做到这一点,我的第一印象是使其全球化,然后再回头看它。 这是我对该部分的代码;
var lastCoordinates();
function gotdata()
{
if (xmlhttp.readyState == 4)
{
var y = xmlhttp.responseXML.documentElement.getElementsByTagName("y")[0].innerHTML;
var x = xmlhttp.responseXML.documentElement.getElementsByTagName("x")[0].innerHTML;
var myLatlng = new google.maps.LatLng(x,y);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Hello World!'
});
}
}
答案 0 :(得分:0)
使用lastCoordinates
作为对象,为每个坐标存储对象中的属性,其名称基于坐标,例如X + '_' + Y;
在创建标记之前,请检查lastCoordinates
是否已包含具有特定名称的属性:
var lastCoordinates={};
function gotdata(){
if (xmlhttp.readyState == 4){
var d = xmlhttp.responseXML.documentElement,
//innerHTML shouldn't work for XML-Nodes
y = d.getElementsByTagName("y")[0].textContent,
x = d.getElementsByTagName("x")[0].textContent,
h = [x,y].join('_');
if(lastCoordinates[h]){
return;
}
lastCoordinates[h]= new google.maps.Marker({
//switched x and y
//I'm not sure what x and y are
//but a latitude usually is y
//and a longitude is x
position: new google.maps.LatLng(y,x),
map: map,
title: 'Hello World!'
});
}
}