有没有办法让地图尽可能放大,但同时将所有标记保留在屏幕上。 我有六个非均匀形状的标记。我只是想把他们的中心和地图定位到那个地方,但我仍然不知道我可以通过编程方式放大地图。
每次创建地图时,这些标记都会更改位置。理想情况下,我会有一个缩放地图的脚本,因此所有内容都包含在视图中。
所以你明白了。我正在从json一次创建一个标记,循环中包含以下行。
mMap.addMarker(new MarkerOptions().position(new LatLng(lat,lng)).title(c.getString("title")));
答案 0 :(得分:23)
您应该使用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);
答案 1 :(得分:1)