【问题标题】:Allow only a single marker on a Google Map [duplicate]在谷歌地图上只允许一个标记[重复]
【发布时间】:2017-07-06 17:21:57
【问题描述】:

我希望用户在页面上的 Google 地图上放置一个标记。如果用户再次点击,第一个标记应该消失,并被新的替换。从谷歌提供的这段代码开始,我将如何做到这一点:

function myMap() {
        var mapCanvas = document.getElementById("map");
        var mapOptions = {
        center: new google.maps.LatLng(51.7, 5), zoom: 6
        };
        var map = new google.maps.Map(mapCanvas, mapOptions);

        google.maps.event.addListener(map, 'click', function(event) {
            marker = new google.maps.Marker({
            position: event.latLng,
            map: map
            });
        });

我的第一次尝试是在 addListener 函数的开头添加marker.remove();,这对我不起作用。

提前感谢您的帮助!

【问题讨论】:

    标签: javascript google-maps


    【解决方案1】:

    自己找到了答案。用以下代码替换 AddListener 效果很好:

    GoogleMaps v3 API Create only 1 marker on click

    var marker;
    
    function placeMarker(location) {
     if ( marker ) {
       marker.setPosition(location);
     } else {
      marker = new google.maps.Marker({
      position: location,
      map: map
      });
     }
    }
    
    google.maps.event.addListener(map, 'click', function(event) {
      placeMarker(event.latLng);
    });
    

    【讨论】:

      【解决方案2】:

      以下代码可帮助您在用户点击时放置标记。如果用户再次单击,则删除较早的标记并标记新位置。我的回答旨在纠正您在第一次尝试时所犯的错误。试试这个。

        var flag=0,marker;
        map.addListener('click', function(e) {
        if(flag)
          marker.setMap(null);
        else
          flag=1;
        marker = new google.maps.Marker({
          position: e.latLng,
          map: map});
        });
      

      【讨论】:

        猜你喜欢
        • 2018-05-16
        • 2021-01-23
        • 2012-09-22
        • 2016-03-10
        • 1970-01-01
        • 1970-01-01
        • 2012-11-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多