web-dev-qa-db-ja.com

Google Maps API v3-オーバーレイをクリアする方法は?

Google Maps API v2では、map.clearOverlays()を使用してマーカーを削除し、再度描画していました。

Google Maps API v3を使用してこれを行うにはどうすればよいですか?

ありがとう

23
Natim

使用可能なさまざまなオプションの詳細については here を参照してください。ただし、マーカーを繰り返し処理して個別に削除する必要があります。コードは次のようになります。

var markers = [];

function clearOverlays() {
 while(markers.length) { markers.pop().setMap(null); }
  markers.length = 0;
}

markers.Push(marker);
google.maps.event.addListener(marker,"click",function(){});
14
Paul Owens

これは良いものです:

http://apitricks.blogspot.com/2010/02/clearoverlays-in-v3.html

リンクが切れた場合の記事:

clearOverlays() in V3

API v3にはclearOverlays()はありません。いくつかのプラクティスが提示されています。これはこれまでで最も簡単だと思います。

(通常どおり)作成時に配列内のすべてのオーバーレイをプッシュします。次のコードは、マップと配列の両方をクリアします。

while(overlays[0])
{
  overlays.pop().setMap(null);
}

配列のpop()メソッドは、配列の最後の要素を削除し、その要素を返します。 'while'は、配列内に要素がある限り、それを続けます。 overlays [0]がもう存在しない場合、ミッションは完了し、コードが続行します。

34
Emmanuel Umaña

私は別の解決策を見つけましたが、マップ上に存在するすべてのオーバーレイを削除します

gmap.overlayMapTypes.setAt( 0, null);

一方、gmapはマップオブジェクトです

2
Karim Samir

単純なdeleteOverLaysメソッド http://code.google.com/apis/maps/documentation/javascript/overlays.html を示しているGoogleマップのドキュメントをご覧ください。

// 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;
  }
}
1
Burak Dede

overlayMapTypesオブジェクトは明確なメソッドをもたらします:

map.overlayMapTypes.clear()

一方、マップはGoogleマップオブジェクトです。

APIバージョンでメソッドが見つからない場合、次のclearのソースに頼ることができます。

clear = function() {
    for (; this.get("length");) this.pop()
};
1
Pascale

これはどう? polyShapeを再度開始するより良い方法がわからないため、.setMap(null)は使用しません。

polyShape = new google.maps.Polygon(
    {
        strokeColor     : '#000000',
        strokeOpacity   : 0.3,
        strokeWeight    : 1,
        fillColor       : "#000000",
        fillOpacity     : 0.26,
        geodesic        : true
    });

その後、パスを反復処理して削除します。

var path = new google.maps.MVCArray;

/**
 * Delete all points inside Map
 */
function clearMap()
{
    //clear markers
    for (var i = 0; i < markers.length; i++)
    {
        markers[i].setMap(null);

    }
    markers = [];

    //clear polygon, still finding more elegant way
    while (polyShape.getPath().length)
    {
        path.removeAt(0);
    }
}
1
Prabowo Murti

Googleが提供する良い例を見つけることができます: http://code.google.com/p/gmaps-samples-v3/source/browse/trunk/clear-all-overlays/clear-all-overlays .html

基本的には、アイデアは削除です

  • マーカー
  • ポリゴン
  • およびポリラインを個別に
0
k_zoltan