我正在使用此脚本将Google地图标记从1个地方移动到另一个地方 资源 Extend Google Maps marker to animate smoothly on update?
根据我的逻辑,这里的前一个&和计算当前位置&除以数字(例如100)&将结果添加到上一个位置100次以到达当前位置。
但是当我将下面给出的步数(Num Deltas)的值从100更改为Eg 4的任何其他数字时使循环运行4次标记位置后,与当前位置不同。 任何一个大家都可以建议我使用步数(Num Deltas)为100&没有任何其他号码
var latlng = new google.maps.LatLng(position[0], position[1]);
var myOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
marker = new google.maps.Marker({
position: latlng,
map: map,
title: "Your current location!"
});
google.maps.event.addListener(map, 'click', function(me) {
var result = [me.latLng.lat(), me.latLng.lng()];
transition(result);
});
}
var numDeltas = 100;
var delay = 10; //milliseconds
var i = 0;
var deltaLat;
var deltaLng;
function transition(result){
i = 0;
deltaLat = (result[0] - position[0])/numDeltas;
deltaLng = (result[1] - position[1])/numDeltas;
moveMarker();
}
function moveMarker(){
position[0] += deltaLat;
position[1] += deltaLng;
var latlng = new google.maps.LatLng(position[0], position[1]);
marker.setPosition(latlng);
if(i!=numDeltas){
i++;
setTimeout(moveMarker, delay);
}
}
以下是代码工作的jsFiddle:http://jsfiddle.net/rcravens/RFHKd/13/
答案 0 :(得分:1)
你的问题就在这一行:
function transition(result){
i = 0; //<--THIS ONE
您应将其设为i = 1;
。目前,您正在进行一次超出预期的行动。当将路径除以100时,它只是不可见,因为差异非常小但是错误始终存在。或者,您可以更改结束条件。