我在谷歌地图上放了两个标记。一个在美国,另一个在亚洲。谷歌只提供缩放级别1、2、3、4、5、6等。
我不想硬编码缩放级别。如何根据距离显示所有标记?也就是说,如果两个项目非常接近或在同一个城市,应使用接近的缩放级别,如果它们相距很远,则应使用最大缩放级别。

最佳答案

您需要将这些标记包含到边界框中,然后使用下面的LatlngBounds对象在其上设置相机:

private void addMarkers() {
    MarkerOptions markerOptions = new MarkerOptions();
    LatLngBounds.Builder boundsBuilder = new LatLngBounds.Builder();

    //add the marker locations that you'd like to display on the map
    boundsBuilder.include(new LatLng(lat1, lng1));
    boundsBuilder.include(new LatLng(lat2, lng2));

    final LatLngBounds bounds = boundsBuilder.build();

    CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds, width, height, padding);
    map.animateCamera(cameraUpdate);
}

10-04 22:21