3

次のコードを使用して、新しいマーカーを追加する前に前のマーカーを削除する呼び出し可能な関数を追加する方法を理解しようとしています。マップはonclickイベントを使用して、ユーザーがクリックする場所にマーカーを追加します...基本的に、マップ上に常に1つのマーカーのみが必要です。

私はほとんどすべてを検索して試しましたが、どういうわけか間違っているに違いありません...コードを一瞥して、それがどのように達成されるかを教えてください。

どうもありがとう!

<script>
  function initialize() {
    var mapOptions = {
      zoom: 11,
      center: new google.maps.LatLng(document.getElementById('field_lat').value,document.getElementById('field_lng').value),
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById('map_canvas'),
        mapOptions);

    google.maps.event.addListener(map, 'click', function(e) {


        // SET MY UI SEARCH TEXT FIELDS TO THE LAT AND LNG
        document.getElementById('field_lat').value = e.latLng.lat();
        document.getElementById('field_lng').value = e.latLng.lng();


      placeMarker(e.latLng, map);
    });
  } 

  function placeMarker(position, map) {
      //Marker.setMap(null);
    var Marker = new google.maps.Marker({
         position: position,
         map: map
    });
    map.panTo(position);

    $("#listbox ul").empty();
    docall(); 
  }

  google.maps.event.addDomListener(window, 'load', initialize);

</script>

マップは次のように本文にあります

<div id="map_canvas" style="width: 400px; height: 400px;"></div>

私はこれかそれに似たものを動かそうとしましたが、サイコロはありません...

// Deletes all markers in the array by removing references to them
function deleteOverlays() {
if (markersArray) {
for (i in markersArray) {
markersArray[i].setMap(null);
}
markersArray.length = 0;
}
}
4

3 に答える 3

4

前のマーカーがある場合は削除するだけです。

var Marker;
function placeMarker(position, map) {
  if(typeof marker!= 'undefined')
      marker.setMap(null);
  var Marker = new google.maps.Marker({
     position: position,
     map: map
  });
  map.panTo(position);

  $("#listbox ul").empty();
  docall(); 
}
于 2015-10-27T11:21:43.293 に答える
2

次の手順を実行するだけです。

I.グローバル変数を宣言します。

var markersArray = [];

II。関数を定義します。

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

また

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

III。以下を呼び出す前に、「markerArray」でマーカーをプッシュします。

markersArray.push(marker);
google.maps.event.addListener(marker,"click",function(){});

IV。必要に応じて関数を呼び出します。

clearOverlays();

また

map.clearOverlays(); 

それでおしまい!!

それがあなたを助けることを願っています。

出典:Google Maps API v3:すべてのマーカーを削除する方法は?

于 2013-01-19T08:52:23.560 に答える
0

最初のクリックでマーカーを設定し、その後のクリックで位置を変更することができます。

var marker;

google.maps.event.addListener(map, 'click', function(event) {
   placeMarker(event.latLng);
});

function placeMarker(location) {
  if (marker == null) {
    marker = new google.maps.Marker({
          position: location,
          map: map
      });
  } else {
    marker.setPosition(location);
  }
}
于 2016-10-07T23:42:55.790 に答える