我编写了一个小算法,可以动画标记从一个点到另一个点的移动。该算法在伪代码中如下所示:
lat_delta = new_lat - old_lat;
lng_delta = new_lng - old_lng;
for(alpha=0; alpha < 1; alpha += 0.1) {
lat = old_lat + (alpha * lat_delta);
lng = old_lng + (alpha * lng_delta);
update_marker(lat, lng);
}
完整代码可在http://dev.syskall.com/map/和 http://dev.syskall.com/map/commute.js 获得。
我遇到的问题是,当地图缩小时,动画似乎是“之字形”。话虽如此,当您放大时,动画会更加流畅。
我相信这可能是因为我的动画是基于 lat,lng 坐标而不是屏幕上的像素。当你缩小时,谷歌地图不那么精确,必须以某种方式四舍五入 latlng 位置。
当然,当前的实现在地图放大时还不错,但在缩小时就不那么好了。
有没有办法解决这个问题?