Javascript 将谷歌地图上的标记从一个地方平滑地移动到另一个地方

Javascript 将谷歌地图上的标记从一个地方平滑地移动到另一个地方,javascript,google-maps,google-maps-api-3,markerclusterer,Javascript,Google Maps,Google Maps Api 3,Markerclusterer,我在下面的代码中使用了这一部分,这只是其中的一部分 流量为-0--> 1) 在(that.markerClusterer.markers_u)中有1个标记。第一个标记进入循环获取当前和更改的位置,进入转换函数并设置好的位置 2) 但问题是,当我将2个标记推入(即.markerClusterer.markers_u)时,标记会少走1步,即g的值会受到影响不知道为什么,但根据我的说法,添加1个标记不应影响它 我试了很多,但找不到任何解决办法 function markClusterToShowByI

我在下面的代码中使用了这一部分,这只是其中的一部分

流量为-0-->

1) 在(that.markerClusterer.markers_u)中有1个标记。第一个标记进入循环获取当前和更改的位置,进入转换函数并设置好的位置

2) 但问题是,当我将2个标记推入(即.markerClusterer.markers_u)时,标记会少走1步,即g的值会受到影响不知道为什么,但根据我的说法,添加1个标记不应影响它

我试了很多,但找不到任何解决办法

function markClusterToShowById(id, position, text) {
    for (markers = that.markerClusterer.markers_, i = 0; i < markers.length; i++) {

    var marker = markers[i];
    if (marker.id2 == id2) {

        var currentPosition_lat = marker.getPosition().lat(),
        currentPosition_long = marker.getPosition().lng()
        new_lat = position.lat(),
        new_long = position.lng();
        var new_loc = [new_lat, new_long];
        var prev_loc = [currentPosition_lat, currentPosition_long];

       transition(new_loc, prev_loc, marker );

            break
    }
    }
    return result
}



function transition(new_loc, prev_loc, marker){
    g = 1;
    deltaLat = (new_loc[0] - prev_loc[0])/4;
    deltaLng = (new_loc[1] - prev_loc[1])/4;

    moveMarker(prev_loc, deltaLat, deltaLng, marker);
}

function moveMarker(prev_loc, deltaLat, deltaLng, marker){
    prev_loc[0] += deltaLat;
    prev_loc[1] += deltaLng;
    var latlng = new google.maps.LatLng(prev_loc[0], prev_loc[1]);
    marker.setPosition(latlng);

    if(g!=4){
    g++;
    setTimeout(function() {
    moveMarker(prev_loc, deltaLat, deltaLng, marker);
    }, 10)

    }
}
函数markClusterToShowById(id、位置、文本){
对于(markers=that.markerClusterer.markers,i=0;i
您可以尝试遵循Google标记群集的实现

代码:


函数初始化(){
var center=newgoogle.maps.LatLng(51.5074,0.1278);
var map=new google.maps.map(document.getElementById('map'){
缩放:3,
中心:中心,,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var标记=[];
var marker=new google.maps.marker({
位置:新google.maps.LatLng(51.5074,0.1278)
});
标记器。推(标记器);
变量选项={
imagePath:'images/m'
};
var markerCluster=新的MarkerClusterer(映射、标记、选项);
}
google.maps.event.addDomListener(窗口“加载”,初始化);
如果选中Marker Clusterer示例链接,您将看到标记分组和取消分组的平滑过渡

希望这有帮助

参考资料:


您可以尝试遵循Google标记群集的实现

代码:


函数初始化(){
var center=newgoogle.maps.LatLng(51.5074,0.1278);
var map=new google.maps.map(document.getElementById('map'){
缩放:3,
中心:中心,,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var标记=[];
var marker=new google.maps.marker({
位置:新google.maps.LatLng(51.5074,0.1278)
});
标记器。推(标记器);
变量选项={
imagePath:'images/m'
};
var markerCluster=新的MarkerClusterer(映射、标记、选项);
}
google.maps.event.addDomListener(窗口“加载”,初始化);
如果选中Marker Clusterer示例链接,您将看到标记分组和取消分组的平滑过渡

希望这有帮助

参考资料:

<div id="map-container"><div id="map"></div></div>
<script src="markerclusterer.js"></script>
<script>
function initialize() {
var center = new google.maps.LatLng(51.5074, 0.1278);

var map = new google.maps.Map(document.getElementById('map'), {
zoom: 3,
center: center,
mapTypeId: google.maps.MapTypeId.ROADMAP
});

var markers = [];
var marker = new google.maps.Marker({
position: new google.maps.LatLng(51.5074, 0.1278)
});
markers.push(marker);

var options = {
imagePath: 'images/m'
};

var markerCluster = new MarkerClusterer(map, markers, options);
}

google.maps.event.addDomListener(window, 'load', initialize);
</script>