不允许 Google 地图 api 多次放置标记
Not allowing Google Maps api to place a marker more than once
我制作了一个与 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!'
});
}
}
使用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!'
});
}
}
我制作了一个与 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!'
});
}
}
使用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!'
});
}
}