1

Googleマップとjsを使用して難問を解決しようとしています。Google マップを扱ったことはなく、JS に関する知識も限られています。

私の主な質問は次のとおりです。How do I Create multiple independent markers on google map, store them into some sort of data structure and then delete particular markers when I need it?

たとえば、各マーカーには独自の ID 番号があり、緯度と経度を取得し、この関数を使用してマップに追加します。

function createMarkers(geocoder, map, name, latitude, longitude, ib, image) {                
//Setting the onclick marker function
var onMarkerClick = function() {
    var marker = this;
    var latLng = marker.getPosition();
    ib.setContent(name);
    ib.open(map, marker); 
};

google.maps.event.addListener(map, 'click', function() {
    ib.close();
});

//In array lat long is saved as an string, so need to convert it into int.
var lat = parseFloat(latitude);
var lng = parseFloat(longitude);

var marker = new google.maps.Marker({
    map: map,
    icon: image,
    position: new google.maps.LatLng(lat, lng),
    title: name
});

//Adding the marker.
google.maps.event.addListener(marker, 'click', onMarkerClick);
}
4

1 に答える 1

2

Google Maps API V3 によると、マーカー インスタンスにはメソッド setMap があります。「指定されたマップまたはパノラマにマーカーをレンダリングします。マップが null に設定されている場合、マーカーは削除されます。」Google Maps API V3 ドキュメントから抜粋

このようなもの

marker.setMap(null);

一方、特定のマーカーを削除したい場合は、あなたが言ったように、特定のマーカーにアクセスできるようにするために、いくつかのデータ構造にマーカーインスタンスを保持する必要があります。ID があるので、マーカーの ID が一意であることを考慮して、ハッシュを使用できます。そんな感じ。

// this variable must be global and accesible from your createMarkers method
var all_markers = {};


function createMarkers(geocoder, map, name, latitude, longitude, id, image) {   

//........

var marker = new google.maps.Marker({
    map: map,
    icon: image,
    position: new google.maps.LatLng(lat, lng),
    title: name
});

all_markers[id] = marker;

//.....................

}

function removeMarker(id) {
  all_markers[id].setMap(null);
  delete all_markers[id];
}
于 2012-11-02T00:37:17.443 に答える