我正在开发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。地图不适合我创建的视图。是否无法在屏幕上显示地图的完整世界视图?
答案 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);
全部:)