谷歌地图 LatLngBounds 偏移
Posted
技术标签:
【中文标题】谷歌地图 LatLngBounds 偏移【英文标题】:Google map LatLngBounds offset 【发布时间】:2017-09-04 12:55:41 【问题描述】:我有这个代码
LatLngBounds.Builder builder = new LatLngBounds.Builder();
builder.include(mainLocation);
builder.include(userLocation);
LatLngBounds bounds = builder.build();
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, 0);
mMap.animateCamera(cu);
这有效,它显示了边界,但我想在屏幕的上半部分显示边界(有没有办法放置偏移 y?)。
(希望这张图能更好地说明问题)
【问题讨论】:
我认为您需要在屏幕上的不同位置显示纬度/经度,对吧? 0.o @FrancisRodrigues 是的,你是对的。 【参考方案1】:如果我理解正确,您现在得到的是地图居中,这意味着您提供的位置在地图上居中。并且您希望这些位置位于屏幕的上部。
似乎there is not 这样的 API 只允许在底部应用填充。
您可以在屏幕下方为LatLngBounds.Builder
添加一个虚假位置,现在CameraUpdate
也会包含该点,这将移动您在上方的2 个真实点。
【讨论】:
是的,你理解正确我会尝试这样的事情。泰 @MePo 我建议您使用相同的文档。我相信有了这个文档,你可以完成你想要的,就像我也解决了同样的问题一样。 ;)【参考方案2】:您可以使用来自GoogleMap
对象的the setPadding
method。
在您的情况下,您需要添加底部填充:
mMap.setPadding(0, 0, 0, 150);
【讨论】:
【参考方案3】:也许晚了,但我解决了这个问题。我在调用 animateCamera 之前为地图制作底部填充,并在更新后返回填充。
val heightValue = (Resources.getSystem().displayMetrics.heightPixels * 0.5).toInt()
map.setPadding(0,0,0,heightValue)
val update = CameraUpdateFactory.newLatLngBounds(bounds,50)
map.animateCamera(update,object:GoogleMap.CancelableCallback
override fun onFinish()
inUi
map.setPadding(0,0,0,0)
override fun onCancel()
)
【讨论】:
【参考方案4】:这是我找到的实现此效果的最佳解决方案。 在为相机设置动画之前强制填充所需的填充,然后立即将填充重置为任何值。
map.setPadding(left, top, right, bottom) // In your example, this will be the only non-zero value.
animateCamera(cameraUpdate) // Trigger the animation
map.setPadding(0, 0, 0, 0) // Reset the padding
【讨论】:
以上是关于谷歌地图 LatLngBounds 偏移的主要内容,如果未能解决你的问题,请参考以下文章