MapBoxインスタンスを作成しました:
var map = new mapboxgl.Map({
container : 'map',
style : 'mapbox://styles/mapbox/streets-v9'
});
すべてのマーカーをクリアする必要があり、それぞれにmap.remove(marker)などを試しましたが、何も機能しないようです。
地図からすべてのマーカーをクリアする単純な関数呼び出しはありますか?
編集: マップからすべてのレイヤーと機能を削除する方法? とは異なります。
これを見た? https://www.mapbox.com/mapbox-gl-js/api/#marker#remove
Map.removeの代わりに、おそらくmarker.removeを試してください:
var marker = new mapboxgl.Marker().addTo(map);
marker.remove();
複数のマーカーを追加し、それらをマップ上ですべてクリアしたい場合は、すべてのマーカーをループオーバーし、それらを1つずつ削除する必要があります。次のようなものになります。
if (currentMarkers!==null) {
for (var i = currentMarkers.length - 1; i >= 0; i--) {
currentMarkers[i].remove();
}
}
Thar var currentMarkersにすべてのマーカーが含まれていることを考慮してください。
oneMarker= new mapboxgl.Marker(currentMarkerDiv)
.setLngLat(marker.geometry.coordinates)
.addTo(mapboxMap);
currentMarkers.Push(oneMarker);
ここで、var currentMarkersはグローバル変数です。
var currentMarkers=[];
完全な例:
// markers saved here
var currentMarkers=[];
// tmp marker
var oneMarker= new mapboxgl.Marker(currentMarkerDiv)
.setLngLat(marker.geometry.coordinates)
.addTo(mapboxMap);
// save tmp marker into currentMarkers
currentMarkers.Push(oneMarker);
// remove markers
if (currentMarkers!==null) {
for (var i = currentMarkers.length - 1; i >= 0; i--) {
currentMarkers[i].remove();
}
}
このようなマーカーを追加した場合(スタイリングとカスタム画像をマーカーとして追加できるようにするため)、クラスを削除できます(ただし、私はJqueryを使用して行いました)。
GeoJsonにあるマーカーの追加:
_GeoJson.features.forEach(function(marker) {
var el = document.createElement('div');
el.className = 'marker';
new mapboxgl.Marker(el).setLngLat(marker.geometry.coordinates).addTo(map);
});
_
マーカーを削除する:
$( ".marker" ).remove();