Google Maps API v3:すべてのマーカーを削除するにはどうすればよいですか?



Google Maps Api V3 How Delete All Markers



この記事の翻訳元: Google Maps API v3:すべてのマーカーを削除するにはどうすればよいですか?

Google Maps API v2では、すべてのマップマーカーを削除したい場合は、次のようにするだけで済みます。 Google Maps API v2では、すべてのマップマーカーを削除したい場合は、次のようにするだけです。



map.clearOverlays()

Google MapsAPIでこれを行うにはどうすればよいですか v3 Google MapsAPIの使用方法 v3 これを行う?

を見て リファレンスAPI 、それは私にはわかりません。 見てください リファレンスAPI 、私はわかりません。




#1階

参照: https://stackoom.com/question/6Tr9/Google-Maps-API-v-すべてのマーカーを削除する方法


#2階

for (i in markersArray) { markersArray[i].setMap(null) }

IEでのみ動作しています。 IEでのみ機能します。


for (var i=0 i

クロム、Firefox、すなわち...に取り組んでいます クロム、Firefox、つまり...




#3階

ポリゴン、マーカーなどを含むすべてのオーバーレイをクリアするには... ポリゴン、マーカーなどを含むすべてのオーバーレイをクリアするには...

単に使用してください: 使用するだけです:

map = new google.maps.Map(document.getElementById('map_canvas'), myOptions)}

これは、マップアプリケーションでフォームを作成するために作成した関数です。 これは私が地図アプリケーションで書いた関数です:

function clear_Map() { directionsDisplay = new google.maps.DirectionsRenderer() //var chicago = new google.maps.LatLng(41.850033, -87.6500523) var myOptions = { zoom: 8, mapTypeId: google.maps.MapTypeId.ROADMAP, center: HamptonRoads } map = new google.maps.Map(document.getElementById('map_canvas'), myOptions) directionsDisplay.setMap(map) directionsDisplay.setPanel(document.getElementById('directionsPanel')) }

#4階

V3にはまだそのような機能はないようです。 V3にはそのような機能はないようです。

人々はあなたが地図上に持っているすべてのマーカーへの参照を配列に保つことを提案します。 マップ上のすべてのマーカーへの参照を配列内に保持することをお勧めします。 そして、すべてを削除したい場合は、配列をループして、各参照で.setMap(null)メソッドを呼び出すだけです。 次に、すべてを削除する場合は、配列をループして、各参照で.setMap(null)メソッドを呼び出します。

詳細/コードについては、この質問を参照してください。 詳細/コードについては、この質問を参照してください。

私のバージョン: 私のバージョン:

google.maps.Map.prototype.markers = new Array() google.maps.Map.prototype.getMarkers = function() { return this.markers } google.maps.Map.prototype.clearMarkers = function() { for(var i=0 i

コードはこのコードの編集バージョンです http://www.lootogo.com/googlemapsapi3/markerPlugin.html addMarkerを手動で呼び出す必要がなくなりました。 コードはこのコードの編集バージョンです http://www.lootogo.com/googlemapsapi3/markerPlugin.html addMarkerを手動で呼び出す必要がなくなりました。

長所 利点

  • このようにすることで、コードをコンパクトに1か所にまとめることができます(名前空間を汚染しません)。 このようにして、(名前空間を汚染することなく)コードを1か所に保存できます。
  • マーカーを自分で追跡する必要はもうありません。map.getMarkers()を呼び出すことで、マップ上のすべてのマーカーをいつでも見つけることができます。 マーカーを自分で追跡する必要はなくなりました。map.getMarkers()を呼び出すことで、マップ上のすべてのマーカーをいつでも見つけることができます。

短所 不利益

  • 私が行ったようにプロトタイプとラッパーを使用すると、コードがGoogleコードに依存するようになります。ソースに市長の変更を加えると、これは機能しなくなります。 私のようにプロトタイプとラッパーを使用すると、コードがGoogleコードに依存するようになり、ソースコードに市長の変更を加えると壊れます。
  • あなたがそれを理解していないなら、あなたはそれが壊れた場合にそれを修正することができません。 わからないと壊れたら解決できません。 これを壊すようなものを変更する可能性は低いですが、それでも.. これを壊すものは何でも変更する可能性がありますが、それでも...
  • 1つのマーカーを手動で削除した場合、その参照は引き続きマーカー配列に残ります。 タグを手動で削除した場合、その参照は引き続きタグ配列に残ります。 (setMapメソッドを編集して修正することもできますが、トラフマーカー配列をループして参照を削除する必要があります) (setMapメソッドを編集して修正することはできますが、コストはスロットマーカー配列をループして参照を削除することです)

#5階

google.maps.Map.prototype.markers = new Array() google.maps.Map.prototype.addMarker = function(marker) { this.markers[this.markers.length] = marker } google.maps.Map.prototype.getMarkers = function() { return this.markers } google.maps.Map.prototype.clearMarkers = function() { for(var i=0 i

V3にはないので、上記のカスタム実装を使用しました。 V3にはないと思うので、上記のカスタム実装を使用しました。

免責事項:私はこのコードを作成しませんでしたが、コードベースにマージしたときに参照を保持するのを忘れたため、どこから来たのかわかりません。 免責事項:私はこのコードを作成しませんでしたが、コードベースにマージしたときに、参照を保持するのを忘れたため、どこから来たのかわかりません。


#6階

'set_map '両方の回答に投稿された関数は、Google Maps v3APIでは機能しなくなったようです。 2つの答えで掲示される 'set_mapこの機能は、Google Maps v3APIでは使用できなくなったようです。

何が起こったのだろうか 何が起こったのかわからない

更新: 更新:

GoogleはAPIを次のように変更したようです 'set_map 'は'ではありません 'setMap '。 GoogleはAPIを変更したようです 'set_map 「ない」setMap 」。

http://code.google.com/apis/maps/documentation/v3/reference.html http://code.google.com/apis/maps/documentation/v3/reference.html