Google Maps API v2では、map.clearOverlays()
を使用してマーカーを削除し、再度描画していました。
Google Maps API v3を使用してこれを行うにはどうすればよいですか?
ありがとう
使用可能なさまざまなオプションの詳細については 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(){});
これは良いものです:
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]がもう存在しない場合、ミッションは完了し、コードが続行します。
私は別の解決策を見つけましたが、マップ上に存在するすべてのオーバーレイを削除します
gmap.overlayMapTypes.setAt( 0, null);
一方、gmapはマップオブジェクトです
単純な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;
}
}
overlayMapTypes
オブジェクトは明確なメソッドをもたらします:
map.overlayMapTypes.clear()
一方、マップはGoogleマップオブジェクトです。
APIバージョンでメソッドが見つからない場合、次のclear
のソースに頼ることができます。
clear = function() {
for (; this.get("length");) this.pop()
};
これはどう? 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);
}
}
Googleが提供する良い例を見つけることができます: http://code.google.com/p/gmaps-samples-v3/source/browse/trunk/clear-all-overlays/clear-all-overlays .html
基本的には、アイデアは削除です