删除Google地图覆盖物时出现“this.remove不是一个函数”错误提示。

4

我有一个覆盖在Google地图上的叠加层:

function CustomerMarker(map) {
    this.Map = map;
    this.setMap(map);

}

    GoogleMap = new google.maps.Map(document.getElementById("map"), {
        zoom: 16,
        canZoom: false,
        center: { lat: lat, lng: lng },
        mapTypeControl: false,
        streetViewControl: false,
        scaleControl: false,
        clickableIcons: false
    });

    CustomMarker.prototype = new google.maps.OverlayView();
    CustomMarker.prototype.onAdd = function () {
        //Some code
    };
    CustomMarker.prototype.draw = function () {
        //Some code
    };

    CustomMarker = new CustomMarker(GoogleMap);

这个功能运行良好,遮盖层也显示出来了。然而,当我尝试移除它时就会出现问题。

CustomMarker.setMap(null)

我遇到了一个错误,而且标记还在。
Error: this.remove is not a function
pz@https://maps.googleapis.com/maps-api-v3/api/js/30/1/overlay.js:1:251
rk@https://maps.googleapis.com/maps-api-v3/api/js/30/1/overlay.js:2:476
_.pg.prototype.map_changed/<@https://maps.googleapis.com/maps/api
/js?key=AIzaSyBCiIPv6fgrRVn3veTJeP6ihfhrw8AXwbY:125:662
_.G@https://maps.googleapis.com/maps/api/js?key=AIzaSyBCiIPv6fgrRVn3veTJeP6ihfhrw8AXwbY:51:447
_.pg.prototype.map_changed@https://maps.googleapis.com/maps/api/js?key=AIzaSyBCiIPv6fgrRVn3veTJeP6ihfhrw8AXwbY:125:636
Db@https://maps.googleapis.com/maps/api/js?key=AIzaSyBCiIPv6fgrRVn3veTJeP6ihfhrw8AXwbY:37:103
_.k.set@https://maps.googleapis.com/maps/api/js?key=AIzaSyBCiIPv6fgrRVn3veTJeP6ihfhrw8AXwbY:101:728
_.jd/<@https://maps.googleapis.com/maps/api/js?key=AIzaSyBCiIPv6fgrRVn3veTJeP6ihfhrw8AXwbY:55:317

1
在 setMap 后面尝试加上 CustomerMarker = null;。让我知道结果如何。 - Hayden Carlson
2个回答

3
OverlayView文档中写道:

您必须实现三个方法:onAdd()、draw()和onRemove()。

我没有看到onRemove的实现。

我没有意识到 setMap(null) 不会自动删除我添加到覆盖层 DOM 的 div。谢谢,问题已经解决了。 - Sean Forman

0

请更新您的脚本MarkerClustererPlus

markerclusterer.js @版本2.1.1 [2013年11月4日]


由于当前编写的方式,您的回答不够清晰。请进行[编辑],添加更多细节以帮助其他人理解它如何回答所提出的问题。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接