在android屏幕上适合完整的世界地图

时间:2017-01-15 09:06:58

标签: android google-maps zoom

我正在开发Android应用,我想在谷歌地图上放置两个标记。这个想法是用户可以一目了然地看到这两个位置而无需与地图交互。

 LatLngBounds.Builder b = new LatLngBounds.Builder();
 b.include(userPos);
 b.include(cardPos);
 LatLngBounds bounds = b.build();
 int width = (int) (0.7 * infoView.getWidth());
 int height = (int) (0.7 * mapView.getHeight());
 CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, width, height, 5);
 googleMap.animateCamera(cu);

当两个位置相隔很远时,代码工作正常。但是,当位置例如是新加坡和美国时,这两个标记不能一起看。 我试图手动将缩放级别设置为0,结果相同。 有什么方法可以一次在Android设备上显示整个世界地图(即无需滚动用户的部分)?

更新: 我已经尝试将地图设置为显式缩放级别0。地图不适合我创建的视图。是否无法在屏幕上显示地图的完整世界视图?

1 个答案:

答案 0 :(得分:0)

您应该使用CameraUpdate类(可能)执行所有程序化地图移动。

为此,首先计算所有标记的边界,如下所示:

LatLngBounds.Builder builder = new LatLngBounds.Builder();
for (Marker marker : markers) {
    builder.include(marker.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);

全部:)