1

我正在尝试使用谷歌地图和 js 解决一个难题。我从未使用过谷歌地图,而且我对 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 号,我得到它的 lat 和 lon,然后我使用这个函数将它添加到地图:

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 方法。它“在指定的地图或全景图上渲染标记。如果地图设置为空,标记将被删除。” 从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 回答