不允许Google Maps API不止一次放置标记

时间:2015-06-05 09:13:55

标签: javascript html google-maps google-maps-api-3 coordinates

我制作了一个与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!'
      });

    }
}

1 个答案:

答案 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!'
                            });

    }
}