P S*_*oud 7 google-maps google-maps-api-3 google-maps-markers
我正在使用google maps api 3.9.在app用户可以添加标记或删除标记.当用户点击地图时,将显示Infowindow.用户可以在其中输入名称,lat,long并单击保存图像,如下所示:
google.maps.event.addListener(map, 'click', function(event) {
point = new google.maps.Marker({
position: event.latLng
, map: map
, icon: 'resource/image/mapIcons/point.png'
, id: id
, type:"point"
});
type = point.type;
newPoint = true;
existingPoint = false;
markerObj = this;
inputInfowindow.setContent("<table style='width:92%;' id='inputTable'>" +
"<tr> <td>point</td> </tr>" +
"<tr> <td><input class='infoInput' type='text' id='name' placeholder='name'/> </td> </tr>" +
"<tr> <td><input class='infoInput'type='text' id='lat' placeholder='latitude'/></td> </tr>" +
"<tr> <td><input class='infoInput'type='text' id='lon' placeholder='longitude'/></td> </tr>" +
"<tr><td><input type='image' src='resource/image/mapIcons/save.png' onclick='save()' class='saveImage' alt='save'/> </td></tr>");
event1 = event.latLng;
currentMarker = point;
inputInfowindow.open(map,point);
});
Run Code Online (Sandbox Code Playgroud)
标记保存在DB中.当用户在删除按钮上cllks时,将调用以下方法:
function deleteMarker(id,rev) {
var marker = markerObj;
markerObj = undefined;
var x = confirm("are you sure to delete marker?");
if(x){
deleteLocations(id,rev);//removes marker details from DB
if(marker){
console.log(marker);
marker.setMap(null);
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是在marker.setMap(null); 标记从地图中移除仍然在地图上.我用console.log(标记)检查; 标记对象正常,控制台没有错误.经过大量的谷歌搜索,但没有结果.请帮忙.
Cde*_*eez 13
从文件 -
要从地图中删除叠加层,请调用叠加层的setMap()方法,并传递null.请注意,调用此方法不会删除叠加层; 它只是从地图中删除叠加层.如果您希望删除叠加层,则应将其从地图中删除,然后将叠加层本身设置为null.
所以marker.setMap(null)你也应该写marker=null
Update1-
function deleteMarker(id,rev) {
var x = confirm("are you sure to delete marker?");
if(x)
{
deleteLocations(id,rev);//removes marker details from DB
if(markerObj)
{
console.log(markerObj);
markerObj.setMap(null);
markerObj=null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
更新2-
这是一个有效的简单演示.查看代码并检查代码错误的位置.您的代码中可能存在一些可变范围问题.
| 归档时间: |
|
| 查看次数: |
36952 次 |
| 最近记录: |