我写了一个小算法来激活标记的运动 一点到另一点。该算法在伪代码中看起来像这样:
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坐标而不是屏幕上的像素。缩小时,Google地图不是 精确并且必须以某种方式绕过latlng位置。
当然,当地图放大而不是放大时,当前的实现就可以了 当它缩小时非常好。
有没有解决这个问题的方法?
答案 0 :(得分:0)
是的... api gives you methods可以获取地图上所有标记的像素值。我会做以下事情:
获取标记的像素值
在该位置渲染虚拟标记
删除原始标记
将您的假人动画到新地点 使用像素值
在现场放置一个新的地图标记
删除虚拟
在开始和结束时,您可以使用api从像素中获取latlng,反之亦然。