javascript - 如何在 map 中不闪烁地平滑移动标记

标签 javascript google-maps google-maps-api-3

每次我向我们的服务器请求获取我的设备的新位置并更新我的标记在 map 上的位置时,我的标记都有问题,当我的车辆设备移动时,标记将跳到新位置及其闪烁。 我怎样才能避免这种情况不闪烁,或者我的标记可以平滑移动。

提前谢谢你。

var map;
var marker;
var markerarray =[];

setInterval(function(){

    $.ajax({
        type: "post",
        url: "vehiclecordinates.php",
        success: function(data){

            coordinates = data.latlng;
            vehiclename = data.vehiclename;

            for (var i = 0; i < coordinates.length; i++) {

                newcoordinate = new google.maps.LatLng(coordinates[i].split(",")[0],coordinates[i].split(",")[1]);
                marker =  new MarkerWithLabel({
                     map:map,
                     labelClass: "mylabels",
                     labelStyle: {opacity: 1.0},
                     labelContent: '<div>'+ vehiclename[i]+'</div>',
                     icon:{
                         //some options here
                     },
                });

                marker.setPosition(newcoordinate);
                markerarray.push(marker);
            }
        }
    });

    setTimeout(function () {
        removeMarkers();
        delete marker;
    }, 1000);
},5000);

function removeMarkers() {
    for(var i = 0; i < markerarray.length; i++) {
        markerarray[i].setMap(null);
    }
}

最佳答案

如果您不希望它们闪烁,请不要将它们从 map 中“移除”,更新它们的位置。

var map;
var marker;
var markerarray =[];

setInterval(function(){
  $.ajax({
    type: "post",
    url: "vehiclecordinates.php",
    success: function(data){
      coordinates = data.latlng;
      vehiclename = data.vehiclename;
      for (var i = 0; i < coordinates.length; i++) {
        newcoordinate = new google.maps.LatLng(coordinates[i].split(",")[0],coordinates[i].split(",")[1]);
        if (markerarray[vehiclename[i]] && markerarray[vehiclename[i]].setPosition){
          markerarray[vehiclename[i]].setPosition(newcoordinate);
        else {
          marker =  new MarkerWithLabel({
            map:map,
            labelClass: "mylabels",
            labelStyle: {opacity: 1.0},
            labelContent: '<div>'+ vehiclename[i]+'</div>',
            icon:{
              //some options here
            }
          });
          marker.setPosition(newcoordinate);
          markerarray[vehiclename[i]] = marker;
        }
      }
    }
  });
},5000);

参见 example基于 this similar question 中的示例

关于javascript - 如何在 map 中不闪烁地平滑移动标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25534584/

相关文章:

javascript - Google map API - 使用 Infowindow 控制位置

javascript - 如何使用 php 提交输入值,具体取决于基于下拉选择显示的输入值

javascript - sipML5 中的通话质量指标

javascript - 隐藏透明div后面的元素,但不隐藏背景

css - 谷歌地图叠加层

java - 如何在谷歌地图上绘制所有路线

android - 如何从 Google map 应用获取用户当前的 GPS 位置?

javascript - 根据类别筛选标记

javascript - Google map API 错误 : This API key is not authorized to use this service or API. 地点 API 错误:ApiTargetBlockedMapError

javascript - 对象文字中的 JQuery