在Google地图中从一个标记点击另一个标记时,如果两个标记都位于初始地图视图中,则地图屏幕会平滑移动,但如果其中一个标记在屏幕外,则会跳转。
我正在尝试设置一个地图,该地图在主地图区域内有多个位置,但有一个“屏幕外”。我有一个路标图标指向初始地图区域内较远的位置,我想在点击时平滑地滚动到屏幕外位置(以便更好地了解它的相对位置)。我在Maps API中找不到任何可以让我这样做的东西。
我可以缩小,移动然后再放大,但这看起来有点刺耳。我错过了API中的内容,还是有人有任何建议?
答案 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()方法不再像以前那样有效:(