我正在尝试使用谷歌地图和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);
}
答案 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];
}