安卓谷歌地图API V2中央标记

7
有没有一种方法可以让地图尽可能地缩放,但同时保持所有标记在屏幕上可见。我有六个标记,它们的形状不均匀。我想过只取它们的中心并将地图定位到那里,但我仍然不知道如何以编程方式将地图缩放到多远。
这些标记每次创建地图时都会更改位置。理想情况下,我希望有一个脚本,可以将地图缩放到包含所有标记的视图中。
因此,您应该明白。我正在使用循环中的以下行从json逐个创建标记。
mMap.addMarker(new MarkerOptions().position(new LatLng(lat,lng)).title(c.getString("title")));
2个回答

24

您应该使用CameraUpdate类来进行(可能是)所有的编程式地图移动。

要做到这一点,首先像下面这样计算所有标记的边界:

LatLngBounds.Builder builder = new LatLngBounds.Builder();
for each (Marker m : markers) {
    builder.include(m.getPosition());
}

LatLngBounds bounds = builder.build();

通过使用工厂CameraUpdateFactory获得一个移动描述对象:

int padding = 0; // offset from edges of the map in pixels
CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);

最后移动地图:

googleMap.moveCamera(cu);

或者如果你想要动画效果:

googleMap.animateCamera(cu);

*从另一篇帖子获取:Android地图v2缩放以显示所有标记


1
请问您能否提供原始帖子的链接以便获取更多上下文信息。 - Somk
这是关于编程的内容。以下是它的链接:https://dev59.com/YmUq5IYBdhLWcg3wEcNY#14828739 - Jai Kumar
谢谢。但是这一行让我困惑:foreach (Marker m : markers) { 我该如何获取markers? - Somk
你也可以不使用它,只需使用你的标记对象即可完成。builder.include(m.getPosition()); 这里的 m 是标记对象。 - Jai Kumar

1

这是最好的选择,只需更新到最新版本,您永远不知道谷歌何时会删除整个软件包 :p - silentsudo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接