Javascript 如何管理和处理谷歌地图标记
我试图用谷歌地图和js解决一个难题。 我从未使用过谷歌地图,我对JS的了解也很有限 我的主要问题是:Javascript 如何管理和处理谷歌地图标记,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我试图用谷歌地图和js解决一个难题。 我从未使用过谷歌地图,我对JS的了解也很有限 我的主要问题是:如何在谷歌地图上创建多个独立的标记,将它们存储到某种数据结构中,然后在需要时删除特定的标记? 例如,每个标记都有自己的id号,我得到它的lat和lon,我使用此函数将其添加到地图: function createMarkers(geocoder, map, name, latitude, longitude, ib, image) { //Setting the o
如何在谷歌地图上创建多个独立的标记,将它们存储到某种数据结构中,然后在需要时删除特定的标记?
例如,每个标记都有自己的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);
}
根据GoogleMapsAPIv3,marker实例具有方法setMap。信息技术 在指定的地图或全景图上渲染标记。如果地图设置为空,则将删除标记。从中提取 像这样的
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];
}
如果您试图捕获堆快照,则标记仍然存在。上面的方法只将其映射属性指向null,但不会将其从内存中删除