【发布时间】:2018-09-10 16:36:01
【问题描述】:
我正在尝试实现类似于谷歌地图导航的工作方式,请查看下图以供参考。在谷歌地图中,标记看起来是在一个静态位置,除了相机正在改变
。
为了实现这一点,我会在每次位置变化时为标记设置动画,然后通过在 Y 坐标中平移 -300 像素将其定位到屏幕底部。
但我无法为相机设置动画以更改位置并同时将屏幕向下移动 300 像素。
当我为相机设置动画以改变位置时,标记准确地移动到屏幕的中心,然后当我将相机移动到低于 300 像素的位置时,其他动画就会发生,这看起来很烦人。
有什么方法可以实现谷歌地图的功能吗?任何参考或帮助表示赞赏。
【问题讨论】:
-
一种方法是使用当前缩放级别的 Projection.getVisibleRegion() 计算“阴影”目标 - 这将为您提供屏幕像素到 wgs84 空间的当前映射。有了这个,您可以获取新的位置位置,将阴影目标(屏幕的结果中心)计算为像素偏移量(如您所说的 300 像素),并将该像素坐标重新映射到动画目标的 lat/lng。请注意,您的 300px 偏移量是特定于缩放的。 (这并不像我说的那么难 - 只需探索 Projection 类 (getVisibleRegion),它就应该开始有意义了。)
-
感谢您的快速响应,但我们如何处理轴承?例如。我的相机当前指向东方,而新位置恰好在北方,改变相机方向会导致 LatLng 错误。
-
我会推荐一个第三方地图服务,您可以根据自己的要求进行定制。 mapbox.com ,看一下代码,你只需要添加几行代码就可以达到预期的效果。
标签: android google-maps animation maps