温馨提示:本文翻译自stackoverflow.com,查看原文请点击:javascript - Leaflet updating marker disappears for as long as it shows
javascript leaflet

javascript - 单张更新标记消失的时间只要显示

发布于 2020-04-12 10:13:14

我正在使用传单,并且正在编写一个脚本,该脚本每X秒更新一次标记位置。每当我更新标记时,标记就会消失,只要它在 map上显示的时间就消失了。该值与更新程序的间隔相同。在下面的示例中,间隔为1000ms,这意味着间隔显示1000ms,然后消失1000ms。

如果我们更改该值,消失的时间将随之改变。它是直接链接的。我要完成的工作是更新标记,而不会消失或只消失一个

<!DOCTYPE html>
<html>

<head>
  <link rel="stylesheet" href="https://unpkg.com/leaflet@1.6.0/dist/leaflet.css" integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ==" crossorigin="" />
  <script src="https://unpkg.com/leaflet@1.6.0/dist/leaflet.js" integrity="sha512-gZwIG9x3wUXg2hdXF6+rVkLF/0Vi9U8D2Ntg4Ga5I5BZpVkVxlJWbSQtXPSiUTtC0TjtGOmxa1AJPuV0CPthew==" crossorigin=""></script>
</head>

<body>
  <div id="mapid" style="width: 600px; height: 400px;"></div>
  <script>
    var mymap = L.map('mapid').setView([51.505, -0.09], 13);

    L.tileLayer('https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4NXVycTA2emYycXBndHRqcmZ3N3gifQ.rJcFIG214AriISLbB6B5aw', {
      maxZoom: 18,
      attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, ' +
        '<a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, ' +
        'Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
      id: 'mapbox/streets-v11'
    }).addTo(mymap);

    var marker = L.marker([51.5, -0.09]).addTo(mymap);

    setInterval(function() {
      var markerPos = marker.getLatLng();
      marker.setLatLng([markerPos.lng + 0.001, markerPos.lat]);
    }, 1000);
  </script>
</body>

</html>

查看更多

提问者
hiwave
被浏览
29
peeebeee 2020-02-02 19:45

您每次更新标记的代码都会使经纬度反转。因此,每隔一次,位置就会更新到 map之外的位置。尝试此操作(如果需要,可以修改以增加lng而不是lat)

var markerPos = marker.getLatLng();
marker.setLatLng([markerPos.lat + 0.001, markerPos.lng]);