【问题标题】:How do I delete a marker on Google Maps?如何删除谷歌地图上的标记?
【发布时间】:2011-01-28 00:57:03
【问题描述】:

我只知道一种方法:

右击并点击“删除我”

我还能如何删除 Google 地图上的标记?

这是我现在的代码:

GEvent.addListener(marker, 'mousedown', function(e) {
    alert(e)
    if (e.button == 2){
    alert('sss')
    map.removeOverlay(marker);
}

当我右键单击时,它会提醒(40.23141543543321,114.3214121421);当我查看 API 时,我看到了这个:

mousedown(latlng:GLatLng) 

所以我认为e 不是一个事件,而是一个“GLatLng”

如果我使用“singlerightclick”,右键单击时不会发生任何事情。

这是我的完整代码:

<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
    <head> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
        <meta name="viewport" content="width=device-width,minimum-scale=0.3,maximum-scale=5.0,user-scalable=yes">

    </head>
<body onload="initialize()" onunload="GUnload()">

<style type="text/css">
*{
    margin:0;
    padding:0;
    }
#head{
    height:70px;
    background:#a00;
    }
#logo{
color:white;
font-weight:bold;
line-height:70px;
margin-left:100px;
    }
#main{
position:relative;
margin-top:1px;
    }
#left{
border:1px solid red;
height:700px;
margin-right:202px;
    }
#top{
font-weight:bold;
line-height:70px;
margin-left:120px;
    }
#map_canvas{
height:630px;
    }
#right{
background:#ff0;
float:right;
height:702px;
position:absolute;
right:0;
top:0;
width:200px;
    }

.container{
border:5px solid red;
height:50px;
margin-left:50px;
padding:17px 0 0 20px;
width:85%;
    }
.b{
    background:url(img/xr.png) right no-repeat;
    }
.b > div{
    width:30px;
    height:31px;
    background:url(img/xpinIcon.png) 0 0 no-repeat;
    }
.c{
    background:url(img/xr.png) right no-repeat;
    margin-left:60px;
    }
.c > div{
    width:30px;
    height:31px;
    background:url(img/xlineIcon.png) 0 0 no-repeat;
    }
</style>
<!--<div style="width:100px;height:100px;background:blue;"> </div>-->
<div id=head>
    <div id=logo>logo</div>
</div>
<div id=main>
    <div id=left>
        <div id=top>search
        <input type="text" name="" id="" style="width:80%"/>
        </div>
        <div id="map_canvas" ></div>
    </div>
    <div id=right ></div>
</div>


<script src="jquery-1.4.2.js" type="text/javascript"></script>
<script src="jquery-ui-1.8rc3.custom.min.js" type="text/javascript"></script>
<script type="text/javascript" src="nicEdit.js"></script>
  <script src="http://ditu.google.cn/maps?file=api&amp;v=2&amp;sensor=false&amp;key=ABQIAAAA-7cuV3vqp7w6zUNiN_F4uBRi_j0U6kJrkFvY4-OX2XYmEAa76BSNz0ifabgugotzJgrxyodPDmheRA" type="text/javascript"></script>

<script type="text/javascript">
var aFn;
//**********
function initialize() {
    if (GBrowserIsCompatible()) {

        //************
        function a() {
        }
        //if(GControl)
        a.prototype = new GControl();
        a.prototype.initialize = function(map) {
            var container = document.createElement("div");
            var a='';
            for(i=0;i<2;i++){
                a+='<div class=b style="position:absolute;"><div></div></div>'
                }
            for(i=0;i<2;i++){
                a+='<div class=c style="position:absolute;"><div></div></div>'
                }
            $(container).addClass('container');
          $(map.getContainer()).append($(container).append(a));
          return container;
        }
        a.prototype.getDefaultPosition = function() {
          return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(7, 7));
        }

        //************
                var map = new GMap2(document.getElementById("map_canvas"));
                map.addControl(new a());
                map.enableScrollWheelZoom();
                var center=new GLatLng(39.9493, 116.3975);
                map.setCenter(center, 13);


        aFn=function(x,y){

            var point =new GPoint(x,y)
            point = map.fromContainerPixelToLatLng(point);
            var marker = new GMarker(point,{draggable:true});

            var a=$(
            '<form method="post" action="" style="height:100px;overflow:hidden;width:230px;">'+
                '<textarea id="area1" cols="22" rows="5" style="border:none">cilck edit</textarea>'+
            '</form>')

            var once;
            a.click(function(){
                if(!once)var area1=new nicEditor({buttonList : ['bold','fontSize','left','center','right','forecolor']}).panelInstance('area1')
        once=1;
      })
            GEvent.addListener(marker, "click", function(){
                marker.openInfoWindowHtml(a[0]);
        });


            map.addOverlay(marker);
        GEvent.addListener(marker, 'singlerightclick', function(point, source, overlay) {
            alert('sss')
            map.removeOverlay(marker);
            });

            }
        $(".b").draggable({
            revert: true,
            revertDuration: 0
            });
        $('.container').droppable({greedy: true});

        $("#map_canvas").droppable({
        drop: function(event,ui) {
            aFn(event.pageX-$("#map_canvas").offset().left,event.pageY-$("#map_canvas").offset().top);
            //}
            }
        });
        }
}
//*************
</script>
</body>
</html>

我想我是这么想的:

GEvent.addListener(map, 'singlerightclick', function(point, source, overlay) {
    map.removeOverlay(marker);
        });

但不,无论我在地图上点击何处,这都会删除标记。

我想我现在拥有它:

GEvent.addListener(map, 'singlerightclick', function(pixel,tile, marker) {
    if(marker)
    map.removeOverlay(marker);
        });

【问题讨论】:

  • @zjm1126 请更新“答案”

标签: javascript google-maps google-maps-markers


【解决方案1】:

根据这个link你可以简单地做

marker.setMap(null);

【讨论】:

  • 效果很好。只要记住 if (null != marker) marker.setMap(null) - 它就会清除它。
【解决方案2】:
var marker = new GMarker(latlng);
map.addOverlay(marker);

GEvent.addListener(marker, 'singlerightclick', function(point, source, overlay) {
    this.setMap(null);
});

【讨论】:

  • 嗨 Björn,感谢您的代码,但尚未成功,请查看更新。
  • 以下来自 Korayem 的答案对我有用。我在谷歌地图 api v3
【解决方案3】:

它看起来不像 removeOverlay() 在 v3 API 中。非常感谢,Korayem!

【讨论】:

    【解决方案4】:

    任何使用 v3 API 的人都可以通过以下方式使 Marker 不可见:

    marker.setVisible(false);

    【讨论】:

      【解决方案5】:

      将“右键单击”事件侦听器添加到 Google 叠加层

       google.maps.event.addListener(overlay, 'rightclick', function (event) {
       })
      

      【讨论】:

        【解决方案6】:

        方法如下(截至 2018.03.26)(很简单):

        1. 菜单(左上角三个水平条)
        2. 您的位置(列表中途倒置的泪滴)
        3. 已保存
        4. 进行选择(对我来说,这是我想删除的已加星标的地方)
        5. 单击右侧的 3 个点,然后从出现的下拉列表中选择“编辑”
        6. 找到您要删除的标记并点击右侧的“X”框。

        瞧!

        【讨论】:

          猜你喜欢
          • 2012-10-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-13
          • 1970-01-01
          • 1970-01-01
          • 2020-04-02
          • 2013-12-09
          相关资源
          最近更新 更多