当前位置: 首页 > 知识库问答 >
问题:

设置后如何删除google map api标记

呼延光明
2023-03-14

我想只有一个单一的标记,每次点击删除以前的标记,并设置新的标记的LAT/LNG到新的位置。

下面是我的代码:

  var map;
  var markers = [];

  function initMap() {
      var aa = {lat: 32.3896651, lng: 48.3791718};

    map = new google.maps.Map(document.getElementById('map'), {
      zoom: 12,
      center: aa
    });

    // This event listener will call addMarker() when the map is clicked.
    map.addListener('click', function(event) {
      addMarker(event.latLng);
      document.getElementById("la").value = event.latLng.lat();
 document.getElementById("lo").value = event.latLng.lng();
    });



  }

  // Adds a marker to the map and push to the array.
  function addMarker(location) {
    var marker = new google.maps.Marker({
      position: location,
    flat: false,
    map: map,
    draggable: true
    });
    markers.push(marker);
  }

  // Sets the map on all markers in the array.
  function setMapOnAll(map) {
    for (var i = 0; i < markers.length; i++) {
      markers[i].setMap(map);
    }
  }

  // Removes the markers from the map, but keeps them in the array.
  function clearMarkers() {
    setMapOnAll(null);
  }

  // Shows any markers currently in the array.
  function showMarkers() {
    setMapOnAll(map);
  }

  // Deletes all markers in the array by removing references to them.
  function deleteMarkers() {
    clearMarkers();
    markers = [];
  }

共有1个答案

林铭
2023-03-14

通过每次添加新标记,您将在页面中创建许多对象。为什么不重用现有的标记?使标记为全局标记而不是数组标记,

var marker = null;

然后使用setPosition更改现有标记对象的位置:

marker.setPosition(location);

这样,您只使用一个标记,只是在不同的位置。

 var map;
 var marker = null;

function initMap() {
     var aa = {lat: 32.3896651, lng: 48.3791718};

     map = new google.maps.Map(document.getElementById('map'), {
       zoom: 12,
       center: aa
     });

// This event listener will call addMarker() when the map is clicked.
     map.addListener('click', function(event) {
         addMarker(event.latLng);
         document.getElementById("la").value = event.latLng.lat();
         document.getElementById("lo").value = event.latLng.lng();
     });

   }

// Adds a marker to the map and push to the array.
function addMarker(location) {
        if(marker)
            marker.setPosition(location);
        else
            marker = new google.maps.Marker({
                position: location,
                flat: false,
                map: map,
                draggable: true
        });

    }

 // Sets the map on all markers in the array.
 function setMapOnAll(map) {

      marker.setMap(map);

  }

   // Removes the markers from the map, but keeps them in the array.
   function clearMarkers() {
     marker.setMap(null);
   }

   // Shows any markers currently in the array.
   function showMarkers() {
     marker.setMap(map);
   }

   // Deletes all markers in the array by removing references to them.
   function deleteMarkers() {
     clearMarkers();
   }
 类似资料:
  • 问题内容: 我当前的光泽配置设置如下所示: 并且想知道如何删除设置的 “ max_bytes_per_sec” 部分。 你能给我一个建议吗? 问题答案: 好的。我发现了如何删除持久性设置:您转到主节点的已定义数据路径,更具体地说(在我的情况下),然后删除全局状态文件。然后重新启动elasticsearch。

  • 我在一个文件夹中有两个csv文件,如下所示:文件1: 文件 2: 我想从文件夹中读取文件,然后删除标题名称(col1,col2),然后将行更改为列,将列更改为行,这意味着转置它并将这两个文件合并到一个新的csv文件中,如下所示:

  • 我正在使用Kafka(与雅虎Kafka经理) 我想为重置消息设置一个规则,或者他们如何称呼它:“分区偏移量的总和” 在server.properties上是否有滚动kafka偏移量的参数? (即:我想重置或删除所有影响邮件保留的参数) 谢谢。

  • 我有几个Kafka的题目作为测试。现在我想通过清理我的Kafka主题列表来把它们全部除掉。我设置了变量,然后停止并重新启动zookeeper和kafka服务器。但什么也帮不了我。主题仍然存在,“标记为删除”。我读了这个问题,但没有找到任何答案。否则,这里建议手动移除任何主题。但我该怎么做呢?在故事的结尾,手动或通过命令行,我如何永久删除Kafka主题?

  • 问题内容: 在linux环境中,当我运行cython的安装脚本时,我得到 就我而言,我想删除pthread选项。如何通过cython设置文件来做到这一点?我看到有添加编译器标志的选项,但是没有要删除的选项。我的安装文件: 问题答案: 正如@DavidW指出的那样,对于许多选项,还有一个选项可以对其进行否定/覆盖,而命令行上的最后一个选项“ wins”。因此,例如添加额外的编译选项将否决默认设置或,

  • 如何注释我header.php中的标语? 我正在使用2014年的主题,并试图遵循WordPress codex中的元标签说明。要生成一个描述元标记,它会指示您将描述添加到标语中。但是这个标语显示在我打开网页的每个窗口/选项卡的顶部(以及我的网站名称)。要隐藏标语,WordPress建议“删除或注释掉标头区域的标签”我做这个有困难。我在header.php?中到底要评论什么,我在标题中没有看到任何带