如何管理和处理谷歌地图标记

时间:2012-11-02 00:08:56

标签: javascript google-maps google-maps-api-3

我正在尝试使用谷歌地图和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,我使用这个函数将它添加到map:

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);
}

1 个答案:

答案 0 :(得分:2)

根据Google Maps API V3,标记实例的方法是setMap。它 “在指定的地图或全景图上渲染标记。如果将地图设置为null,则将删除标记。”从Google Maps API V3 Documentation

中提取

类似这样的事情

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];
}