如何使用Google地图平滑地为标记设置动画?

时间:2010-10-02 02:01:23

标签: google-maps google-maps-api-3 google-maps-markers

我写了一个小算法来激活标记的运动 一点到另一点。该算法在伪代码中看起来像这样:

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位置。

当然,当地图放大而不是放大时,当前的实现就可以了 当它缩小时非常好。

有没有解决这个问题的方法?

1 个答案:

答案 0 :(得分:0)

是的... api gives you methods可以获取地图上所有标记的像素值。我会做以下事情:

  

获取标记的像素值

     

在该位置渲染虚拟标记

     

删除原始标记

     

将您的假人动画到新地点   使用像素值

     

在现场放置一个新的地图标记

     

删除虚拟

在开始和结束时,您可以使用api从像素中获取latlng,反之亦然。