如何在谷歌地图中创建移动标记

稳定进展

我在我的应用中使用 Google 地图。

用户将能够在地图中的任何地方放置标记。

为此,我编写了以下代码:

var marker;

function myMap() {

  var mapCanvas = document.getElementById("map-canvas");
  var myCenter=new google.maps.LatLng(50.833,-12.9167);
  var mapOptions = {center: myCenter, zoom: 5};
  var map = new google.maps.Map(mapCanvas, mapOptions);

  google.maps.event.addListener(map, 'click', function(event) {

    //marker.setMap(null); // this line does not work
    placeMarker(map, event.latLng);
  });
}

function placeMarker(map, location) {

    marker = new google.maps.Marker({
      position: location,
      map: map
    });

}

标记应该总是移动到用户点击的地方。线

marker.setMap(null); 

应该删除旧标记(在放置新标记之前)。但是,使用代码中的这一行,我无法再放置任何标记。不包括这条线意味着每个标记都保留在地图中并且不会被移除(即地图随着时间的推移被标记填满)。

地理编码

查看 javascript 控制台,您会看到Uncaught TypeError: Cannot read property 'setMap' of undefined. 第一次,marker is nullnull如果它已经存在,你只需要设置它的 map 属性

google.maps.event.addListener(map, 'click', function(event) {

  if (marker) marker.setMap(null);
  placeMarker(map, event.latLng);
});

概念证明小提琴

代码片段:

var marker;

function myMap() {

  var mapCanvas = document.getElementById("map-canvas");
  var myCenter = new google.maps.LatLng(50.833, -12.9167);
  var mapOptions = {
    center: myCenter,
    zoom: 5
  };
  var map = new google.maps.Map(mapCanvas, mapOptions);

  google.maps.event.addListener(map, 'click', function(event) {

    if (marker) marker.setMap(null); 
    placeMarker(map, event.latLng);
  });
}

function placeMarker(map, location) {

  marker = new google.maps.Marker({
    position: location,
    map: map
  });

}
google.maps.event.addDomListener(window, "load", myMap);
html,
body,
#map-canvas {
  height: 100%;
  width: 100%;
  margin: 0px;
  padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map-canvas"></div>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在移动 android studio google maps 中查看谷歌地图中的其他标记

如何像这样创建底部窗口,当点击或移动标记时,窗口也会在谷歌地图中移动,反之亦然

如何在谷歌地图中创建动态地图?

如何在谷歌地图中以不同颜色显示最新标记

如何在谷歌地图中添加来自firestore的标记?

如何在谷歌地图中显示重叠标记

如何在最新的谷歌地图api中缓慢移动标记

如何在谷歌地图上创建自己的自定义标记,如谷歌地图的默认标记

如何在点击谷歌地图中的标记簇时获取所有图钉/标记?

谷歌地图中的多个标记?

如何在Android谷歌地图中动态加载当前位置的标记?

如何在谷歌地图中显示两个标记之间的路径

如何在Android中的谷歌地图中显示所有标记标题

如何在谷歌地图中平滑移动当前位置?

如何在谷歌静态 API 接收的谷歌地图中为基于纬度和经度的位置设置默认标记?

单击谷歌地图中的标记后如何显示模式?

如何在传单中标记类似于谷歌地图的标记

如何在Google地图中添加标记

如何在集群中的谷歌地图标记上创建点击事件?

谷歌地图中未显示多个标记

标记未显示在谷歌地图中

每秒在谷歌地图中添加新标记

如何在谷歌地图中添加svg代码

如何在kotlin中放大谷歌地图中的位置?

如何在谷歌地图中禁用两指滚动

如何在滚动视图中设置谷歌地图片段

如何在谷歌地图中获取落点纬度和经度

如何在地图中突出显示大陆 - 谷歌图表

如何在谷歌地图中意图多个航点?