2016-09-24 110 views
0

我试图在谷歌地图上点击标记以及填充lat和lng的输入框。在放置新标记并更新lat和lng之前,我需要先清除所有现有标记。除了当我添加代码尝试清除所有标记时,所有东西都可以工作。谷歌地图在放置新标记之前清除所有标记

以下代码可以很好地工作,但在放置新标记之前不会清除旧标记。

谢谢。

工作的代码,但不清除现有的标记......

<div id="map"></div> 
<script> 

var map; 


    function initMap() { 

    var latlng = new google.maps.LatLng(-29, 25); 
    var map = new google.maps.Map(document.getElementById('map'), { 
    zoom: 6, 
    center: latlng, 
    }); 

      google.maps.event.addListener(map, 'click', function(event){ 
      var marker_position = event.latLng; 
      marker = new google.maps.Marker({ 
      map: map, 
      draggable: false 
     }); 
    marker.setPosition(marker_position); 
    document.getElementById("latFld").value = event.latLng.lat(); 
    document.getElementById("lngFld").value = event.latLng.lng(); 
})      
    } 
    </script> 

不工作代码清除标记添加一个新的前...

<div id="map"></div> 
<script> 

var map; 
    var markersArray = []; 

    function initMap() { 

    var latlng = new google.maps.LatLng(-29, 25); 
    var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 6, 
     center: latlng, 
    }); 
      markersArray.push(marker); 
    google.maps.event.addListener(marker,"click",function(event){}); 
      google.maps.event.addListener(map, 'click', function(event){ 
      var marker_position = event.latLng; 
    marker = new google.maps.Marker({ 
      map: map, 
      draggable: false 
     }); 
    clearOverlays(); 
    marker.setPosition(marker_position); 
    document.getElementById("latFld").value = event.latLng.lat(); 
    document.getElementById("lngFld").value = event.latLng.lng(); 
}) 

    } 

    function clearOverlays() { 
for (var i = 0; i < markersArray.length; i++) { 
markersArray[i].setMap(null); 
    } 
    } 

谢谢。

+0

看来,这可能是足以只是把'如果(标记)marker.setMap(空)''的标志之前=新的google.maps.Marker({'在你的代码的第一个版本中的行,即删除标记,如果它已经存在,然后继续创建新的标记... – ewcz

+0

谢谢你ewcz。 – user1432290

回答

3

似乎已放置的代码在错误的地方..尝试

<div id="map"></div> 
<script> 

var map; 
var markersArray = []; 

function initMap() { 

    var latlng = new google.maps.LatLng(-29, 25); 
    var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 6, 
     center: latlng, 
    }); 

    clearOverlays(); 
    marker = new google.maps.Marker({ 
      map: map, 
      draggable: false 
    }); 

    google.maps.event.addListener(marker,"click",function(event){}); 
    google.maps.event.addListener(map, 'click', function(event){ 
    var marker_position = event.latLng; 
     marker.setPosition(marker_position); 
     markersArray.push(marker); 
     document.getElementById("latFld").value = event.latLng.lat(); 
     document.getElementById("lngFld").value = event.latLng.lng(); 
    }) 
} 

function clearOverlays() { 
for (var i = 0; i < markersArray.length; i++) { 
     markersArray[i].setMap(null); 
    } 
    markersArray = []; 
    } 
</script> 
+0

非常感谢你,赞赏。 – user1432290

+0

它也帮助了我。 –