在Google Maps中更新标记而不加载整个地图

时间:2018-08-01 10:22:15

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

我在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>

1 个答案:

答案 0 :(得分:0)

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