在创建新标记之前删除最后一个标记

Removing last marker before creating a new one

我想创建一个功能简单的地图。每次我点击,现有的标记应该被删除,并且一个新的标记应该出现在点击位置。

创建新的工作正常,但删除它们不起作用。这是代码,我试过了:

var map;
var latitude, longitude;
var marker;

function placeMarker(location) {

    marker.setMap(null);

    marker = new google.maps.Marker({
          map: map,
          position: location,
    });
    latitude = location.lat();
    longitude = locaton.lng();

    document.getElementById('koordinaten').innerHTML = '<p>' + latitude + '</p>';

}

好的,评论marker.setMap(null);我可以添加任意多的标记,但我只想在地图上添加一个标记。

你能帮我吗,如何删除标记并放置新标记?

谢谢

当你第一次运行这个函数时,第一行会导致错误,因为标记仍然是undefined(没有setMap-method) .

您可能会发现这种情况并绕过第一行:

if(typeof marker!=='undefined'){
   marker.setMap(null);
}

但更好的方法是始终使用相同的标记并应用新位置:

function placeMarker(location) {

    //when marker is undefined, create a marker
    if(typeof marker==='undefined'){
      marker = new google.maps.Marker({
                  map: map
              });
    }
    //set the position
    marker.setPosition(location);


    latitude = location.lat();
    longitude = locaton.lng();

    document.getElementById('koordinaten').innerHTML 
       = '<p>' + latitude + '</p>';

}