我有一个地图,其中显示了由折线链接的一系列点,该地图是LiteMode,但是在某些情况下,当使用这些点创建LatLngBounds并更新相机时,某些点会遗漏在地图之外。

  LatLngBounds.Builder builder = new LatLngBounds.Builder();
    for (LatLng latLng : listPoints) {
        builder.include(latLng);
    }
    LatLngBounds bounds = builder.build();
    int padding = 0; //offset from edges of the map in pixels
    CameraUpdate cu = CameraUpdateFactory.newLatLngBounds(bounds, padding);
    map.moveCamera(cu);


我该如何解决?

通过折线我们可以看到,即使更改填充也看不到它们:
因此,可以看到是否删除了LiteMode:

最佳答案

我解决了问题!
根据Google Maps Lite模式documentation说:


  相机位置,缩放和动画
  支持的?部分地
  您可以设置相机目标和缩放,但不能设置倾斜或方位。在精简模式下,缩放级别会四舍五入到最接近的整数。调用GoogleMap.moveCamera()将为您提供另一个静态地图图像。有关设置和操作相机的更多信息,请参阅更改视图。


我的解决方案是从地图上获得可见区域,并进行比较以查看列表中的任何点是否在该区域之外,如果是这样,我应用ZoomOut来缩小相机,以使我的所有点都在可见区域中。

    for (LatLng latLng : listPoints) {
                if (!(map.getProjection().getVisibleRegion().latLngBounds.contains(latLng))) {
                    map.moveCamera(CameraUpdateFactory.zoomOut());
                    break;
                }
            }


据我了解,问题显然是,例如,如果缩放级别是7.4,则可以通过四舍五入到最接近的整数来正确显示地图上的所有点:7,与LiteMode禁用时相比,丢失了宝贵的.4边距。四舍五入到8。

我不知道这是否是最佳选择,但问题已解决。欢迎任何意见! :)

10-05 22:55