如何在两个Google地图位置之间进行平滑的动画移动?

时间:2010-01-21 10:16:43

标签: google-maps

在Google地图中从一个标记点​​击另一个标记时,如果两个标记都位于初始地图​​视图中,则地图屏幕会平滑移动,但如果其中一个标记在屏幕外,则会跳转。

我正在尝试设置一个地图,该地图在主地图区域内有多个位置,但有一个“屏幕外”。我有一个路标图标指向初始地图区域内较远的位置,我想在点击时平滑地滚动到屏幕外位置(以便更好地了解它的相对位置)。我在Maps API中找不到任何可以让我这样做的东西。

我可以缩小,移动然后再放大,但这看起来有点刺耳。我错过了API中的内容,还是有人有任何建议?

3 个答案:

答案 0 :(得分:29)

不幸的是,我不认为这是可能的(没有谷歌的变化)。来自panTo的{​​{3}}:

  

将地图中心更改为给定的LatLng。如果更改小于地图的宽度和高度,则过渡将平滑地动画。

这意味着如果该更改不小于地图的尺寸​​,则转换将不会平滑地动画化。其他的泛方法也很相似。

您可以尝试多个步骤,但这有点像黑客,我怀疑结果会很差。

抱歉这不是很有帮助(我有同样的问题)。

答案 1 :(得分:11)

对我来说这种方法有效,但我使用的是Google Maps API v2。

LatLng latLng = new LatLng(lat,lng);
map.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, ZOOM_FACTOR));

这会将相机从当前位置设置为新位置。

答案 2 :(得分:1)

如果您使用的是Gmaps API V2,则可以使用panBy()方法轻松实现平滑的动画移动。您必须使用fromLatLngToContainerPixel()方法来查找要平移的像素数量。

以下是代码:

var newLoc = map.fromLatLngToContainerPixel(new GLatLng(lat, lng));
map.panBy(new GSize( newLoc.x, newLoc.y ));

但是,我想要做的是在地图API V3中实现相同的功能,但遗憾的是,fromLatLngToContainerPixel()方法不再像以前那样有效:(