账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    无法将marker从google地图上删除
    27
    0

    1 问题描述: 为什么无法将marker从map上删除

    2 删除代码

    clearMarkers() {
        this.markers.forEach(marker => {
            marker.setMap(null);
        });
        this.markers = [];
    }

    3 错误信息
    Uncaught TypeError: marker.setMap is not a function

    4 尝试的方案
    已经给出提示了,问题发生在类型错误,既然marker是google.maps.Marker的实例,
    那就检查当前的marker到底是不是和预期相符合。

    clearMarkers() {
        this.markers.forEach(marker => {
            if (marker instanceof google.maps.Marker) {
                marker.setMap(null);
            }
        });
        this.markers = [];
    }

    果然不报错了,那就说明marker并不是google.maps.Marker的实例。此时就要去源头看看
    marker的实例化过程。

    let marker = new google.maps.Marker({
        map: self.map,
        position: position,
        draggable: true,
        animation: google.maps.Animation.DROP,
    }).addListener("click", function () {
        if (self.getAnimation() !== null) {
            self.setAnimation(null);
        } else {
            self.setAnimation(google.maps.Animation.BOUNCE);
        }
    });

    第一眼,我还没有看出来,感觉没有问题。但是潜意识中意识到,可以将这段链式代码拆解。

    let marker = new google.maps.Marker({
        map: self.map,
        position: position,
        draggable: true,
        animation: google.maps.Animation.DROP,
    });
    marker.addListener("click", function () {
        if (marker.getAnimation() !== null) {
            marker.setAnimation(null);
        } else {
            marker.setAnimation(google.maps.Animation.BOUNCE);
        }
    });

    代码正常运行。因此问题就出现在这里。

    new google.maps.Marker({
        map: self.map,
        position: position,
        draggable: true,
        animation: google.maps.Animation.DROP,
    }).addListener("click", function () {
        if (self.getAnimation() !== null) {
            self.setAnimation(null);
        } else {
            self.setAnimation(google.maps.Animation.BOUNCE);
        }
    });

    返回的不是marker,而是一个事件监听器。

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • ╰静若安然ぴ 普通会员 1楼

      在Google地图上删除marker并不直接在Google地图应用中完成,你可能需要使用第三方的工具或服务,如GmapServer。以下是一个简单的步骤:

      1. 登录你的Google账号,进入Google地图应用。

      2. 在地图上找到你想要删除的marker,右键点击,选择"编辑标记"。

      3. 在弹出的菜单中,选择"删除标记",然后点击"确定"。

      注意:这个操作可能会导致标记的数据丢失,所以在删除标记之前,最好先备份你的数据。另外,这个操作可能需要你有管理员权限。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部