【问题标题】:Update Marker in Google Maps without loading whole map在不加载整个地图的情况下更新谷歌地图中的标记
【发布时间】:2019-01-08 21:14:50
【问题描述】:

我在 CI 中有一个应用程序,我每隔两秒从数据库中获取员工的当前位置并绘制其当前位置标记 我的代码正在工作,但每 2 秒后它会通过显示新的位置标记来更新标记,但也会继续显示旧标记。 我想在显示新标记之前删除员工的旧标记。 这是我的代码

<script>
function initMap4(data,id) {

    var map2 = new google.maps.Map(document.getElementById('map2'), {
        zoom: 8,
        center: new google.maps.LatLng(31.1704,72.7097),
        mapTypeId: google.maps.MapTypeId.ROADMAP
      });
         var infowindow = new google.maps.InfoWindow({});

         window.setInterval(function(){
          $.ajax({
            type: 'POST',
            url: '<?php echo base_url() ?>salesman/get_salesman_by_id',
            data : { id: id},
            success:  function (response) {
            var result = response ;
             update(result);
            }
          });
        },2000);

    function update(data){

               var clicked = false;
               var locations2;
               if(data){
                locations2= JSON.parse(data);
               }else{
               locations2 = JSON.parse('<?php echo $clocation; ?>');
               }

               var locations_array2= [];

              $.each(locations2[0], function( index, value ) {
                 locations_array2.push([
                     value.first_name,
                     value.lat,
                     value.long,
                     value.checkin_time,
                     value.checkout_time,
                 ]);
               });

              locations2=locations_array2;

                   for (i = 0; i < locations2.length; i++)
                   {
                                 var currTime = Date.now() - 300000;
                                 var online  = locations2[i][5];

                              var    MyOnlineMarker = {
                                    position: new google.maps.LatLng(locations2[i][1], locations2[i][2]),
                                    map: map2,
                                   };

                                 if(locations2[i][4] == "" ){
                                   marker = new google.maps.Marker(MyOnlineMarker);
                                  }else{
                                    marker = new google.maps.Marker({
                                    position: new google.maps.LatLng(locations2[i][1], locations2[i][2]),
                                    map: map2,
                                    icon: 'assets/Images/red.png'
                                   });
                                 }
               }
       }

  }

</script>

【问题讨论】:

标签: google-maps google-maps-api-3 google-maps-markers marker


【解决方案1】:

我已经解决了 通过将标记推入数组而不是删除它们

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 2014-08-30
    • 2019-10-08
    • 1970-01-01
    • 2011-05-22
    • 2015-10-07
    • 2012-03-05
    相关资源
    最近更新 更多