Javascript 如何从谷歌地图中删除标记?
请帮我删除地图上的标记后,点击它 我写了一个剧本。鼠标左键单击地图后,将创建标记。鼠标右键单击标记后,应删除该标记 但是,它仅适用于一个标记。对于2、3或4个标记,脚本不起作用。请帮我解决这个问题 js:Javascript 如何从谷歌地图中删除标记?,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,请帮我删除地图上的标记后,点击它 我写了一个剧本。鼠标左键单击地图后,将创建标记。鼠标右键单击标记后,应删除该标记 但是,它仅适用于一个标记。对于2、3或4个标记,脚本不起作用。请帮我解决这个问题 js: 我可以在您的代码中看到几个问题: 不清楚为什么要调用renderMarkers()。这样,您将在地图上重新添加新标记,而不会删除以前的标记 在renderMarkers()函数中,当生成标记时,在generateMarker()函数中缺少导致标记上缺少id的第三个参数,并且在右键单击处理程序中
我可以在您的代码中看到几个问题:
renderMarkers()在标记的右键单击处理程序中的代码>。这样,您将在地图上重新添加新标记,而不会删除以前的标记
renderMarkers()
函数中,当生成标记时,在generateMarker()
函数中缺少导致标记上缺少id的第三个参数,并且在右键单击处理程序中有未定义的m['id']
值
marker.id=id代码>
var映射;
函数initMap(){
map=new google.maps.map(document.getElementById('map'){
缩放:4,
中心:{纬度:-25.363,液化天然气:131.044}
});
渲染器();
map.addListener('click',函数(e){
var lat=e.latLng.lat();
var lng=e.latLng.lng();
var id='id_'+Date.now()+lat.toFixed(2)+lng.toFixed(2);
发电商(lat、lng、id);
});
}
函数getMarkersFromLocalStorage(){
返回localStorage.markers?JSON.parse(localStorage.markers):{};
};
功能添加标记存储(lat、lng、id){
var markers=getMarkersFromLocalStorage();
标记[id]={
拉特:拉特,
液化天然气:液化天然气
};
localStorage.markers=JSON.stringify(标记);
};
函数removeMarkerFromLocalStorage(id){
log('removeMarkerFromLocalStorage');
var markers=getMarkersFromLocalStorage();
删除标记[id];
localStorage.markers=JSON.stringify(标记);
};
函数renderMarkers(){
var markers=getMarkersFromLocalStorage();
用于(道具标记){
发电机标记器(标记器[prop].lat,标记器[prop].lng,prop);
};
};
函数生成器标记器(lat、lng、id){
var marker=new google.maps.marker({
位置:{lat:lat,lng:lng},
地图:地图
});
marker.id=id;
addMarkerToLocalStorage(lat、lng、id);
marker.addListener('右键单击',函数(e){
var m=这个;
log(e,m['id']);
从本地存储中移除标记(m['id']);
此.setMap(null);
});
};代码>
#地图{
身高:100%;
}
html,正文{
身高:100%;
保证金:0;
填充:0;
}
var map;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: {lat: -25.363, lng: 131.044}
});
renderMarkers();
map.addListener('click', function(e) {
var lat = e.latLng.lat();
var lng = e.latLng.lng();
var id = 'id_' + Date.now() + lat.toFixed(2) + lng.toFixed(2);
generateMarker(lat, lng, id);
});
}
function getMarkersFromLocalStorage() {
return localStorage.markers ? JSON.parse(localStorage.markers) : {};
};
function addMarkerToLocalStorage(lat, lng, id) {
var markers = getMarkersFromLocalStorage();
markers[id] = {
lat: lat,
lng: lng
};
localStorage.markers = JSON.stringify(markers);
};
function removeMarkerFromLocalStorage(id) {
console.log('removeMarkerFromLocalStorage');
var markers = getMarkersFromLocalStorage();
delete markers[id];
localStorage.markers = JSON.stringify(markers);
};
function renderMarkers() {
var markers = getMarkersFromLocalStorage();
for(prop in markers) {
generateMarker(markers[prop].lat, markers[prop].lng);
};
};
function generateMarker(lat, lng, id) {
var marker = new google.maps.Marker({
position: {lat: lat, lng: lng},
map: map,
id: id
});
addMarkerToLocalStorage(lat, lng, id);
marker.addListener('rightclick', function(e) {
var m = marker;
console.log(e, m['id']);
removeMarkerFromLocalStorage(m['id']);
this.setMap(null);
renderMarkers();
});
};