我有2个功能,如下所示:

function addMarker() {
    marker = new google.maps.Marker({
        position: Gpoint,
        map: map,
        draggable: true,
        animation: google.maps.Animation.DROP
    });
    map.panTo(Gpoint);

    google.maps.event.addListener(marker, "rightclick",
    function (point) {
    showContextMarker(point.latLng); } );
    $('.contextmenu').remove();
};

function delMarker() { marker.setMap(null); $('.contextmenu').remove(); };

因此,可以理解,我有一个上下文菜单,上面带有“删除标记”选项。
我在添加标记时绑定(bind)了“右键单击”侦听器,以显示此菜单。

到目前为止,一切都正常进行。

但是,当我尝试单击标记删除时;它仅影响最后添加的标记。
当我再试一次;没发生什么事。

因此,我的想法是获取被点击的标记的ID(或可能很有用的东西),并据此运行此删除功能。

简短地;我想从具有多个标记的 map 中删除单击的标记。

您有解决此问题的方法吗?

提前致谢!

已解决!

这是解决方案。谢谢法提赫。没有您的指导,这是不可能的:

var id;
var markers = {};
var addMarker = function () {
    marker = new google.maps.Marker({
        position: Gpoint,
        map: map,
        draggable: true,
        animation: google.maps.Animation.DROP
    });
    map.panTo(Gpoint);
    id = marker.__gm_id
    markers[id] = marker;

    google.maps.event.addListener(marker, "rightclick", function (point) { id = this.__gm_id; delMarker(id) });
}

var delMarker = function (id) {
    marker = markers[id];
    marker.setMap(null);
}

通过以下方式调用删除功能:delMarker(id)附言:“在这种情况下,单击鼠标右键就足够了”

谢谢!

最佳答案

Working Sample on jsFiddle

Google map 不管理您的标记。因此,所有标记都应由您自己管理。

创建一个全局标记对象,然后将所有标记 push 该对象。并在获取标记实例时为每个标记提供唯一的ID。然后,当您要删除标记时,请获取其标记,并在全局标记对象中找到该标记,最后通过传递null参数调用此标记实例的setMap方法。

另外,我还添加了一个可在jsFiddle上运行的演示。代码已被大量记录。

您的伪代码应该是这样的。 有关更详细的代码,请查看演示。

var currentId = 0;
var uniqueId = function(){
返回++ currentId;
}

var markers = {};
var createMarker = function(){
var id = uniqueId(); //获取新ID
var marker = new google.maps.Marker({//创建标记并设置ID
ID:ID,
位置:Gpoint,
map :
可拖动的:是的,
动画:google.maps.Animation.DROP
});
markers [id] =标记; //将创建的标记缓存到以id为键的markers对象
返回标记;
}
var deleteMarker = function(id){
var marker = markers [id]; //通过给定的id查找标记
marker.setMap(null);
}

关于google-maps-api-3 - Google Maps Api 3仅删除所选标记,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8521766/

10-12 00:28
查看更多