首页 > 解决方案 > 如何在不重新加载的情况下动态更新谷歌地图的标记

问题描述

我正在从汽车上获取动态纬度和经度(map_lat,map_lon),并且该值每 1 秒不断变化。

有没有办法更新谷歌地图的标记而不像优步那样重新加载整个地图?注意:WebApp 是基于 Flask 的。

- [代码] -

var map_lat; // changing value dynamiclly at every 1 sec
var map_lon; // changing value dynamiclly at every 1 sec
.
.
.

setInterval(function myMap() {
        var chlat = window.map_lat;
        var chlon = window.map_lon;

      var myCenter = new google.maps.LatLng(chlat,chlon);
      var mapCanvas = document.getElementById("map");
      var mapOptions = {
                        center: myCenter,
                        zoom: 18,
                        mapTypeId:google.maps.MapTypeId.ROAD
      };
      var map = new google.maps.Map(mapCanvas, mapOptions);
      var marker = new google.maps.Marker({position:myCenter});

      marker.setMap(map);
 },2000);

标签: javascripthtmlflaskgoogle-maps-markers

解决方案


尝试每 1.5 秒仅更新一次标记:

     var chlat = window.map_lat;
     var chlon = window.map_lon;

      var myCenter = new google.maps.LatLng(chlat,chlon);
      var mapCanvas = document.getElementById("map");
      var mapOptions = {
                        center: myCenter,
                        zoom: 18,
                        mapTypeId:google.maps.MapTypeId.ROAD
      };
      var map = new google.maps.Map(mapCanvas, mapOptions);
      var marker = new google.maps.Marker({position:myCenter});

      marker.setMap(map);

setInterval( () => {

      marker.setMap(null);


      var position = new google.maps.LatLng(map_lat,map_lon);

      var marker = new google.maps.Marker({position:myCenter});

      marker.setMap(map);


 },1500);

推荐阅读