Lat*_*atm 1 android google-maps google-maps-android-api-2
我有一个地图,其中显示了由折线链接的一系列点,该地图是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);
Run Code Online (Sandbox Code Playgroud)
我该如何解决?
通过折线我们可以看到,即使更改填充也看不到它们:
因此,可以看到是否删除了LiteMode:
![2]](https://i.stack.imgur.com/4Rfdo.jpg)
我解决了问题!
据谷歌地图精简模式文档说:
相机位置,缩放和动画是否
受支持?部分
可以设置摄像机目标和缩放,但不能设置倾斜或方位。在精简模式下,缩放级别会四舍五入到最接近的整数。调用GoogleMap.moveCamera()将为您提供另一个静态地图图像。有关设置和操作相机的更多信息,请参阅更改视图。
我的解决方案是从地图上获得可见区域,并进行比较以查看列表中的任何点是否在该区域之外,如果是这样,我应用ZoomOut来缩小相机,以使我的所有点都在可见区域中。
for (LatLng latLng : listPoints) {
if (!(map.getProjection().getVisibleRegion().latLngBounds.contains(latLng))) {
map.moveCamera(CameraUpdateFactory.zoomOut());
break;
}
}
Run Code Online (Sandbox Code Playgroud)
据我了解,问题显然是,例如,如果缩放级别为7.4,则可以通过四舍五入到最接近的整数来正确显示地图上的所有点:7,与使用LiteMode禁用此功能时相比,丢失了.4的宝贵边距。四舍五入到8。
我不知道这是否是最佳选择,但问题已解决。欢迎任何意见!:)
| 归档时间: |
|
| 查看次数: |
736 次 |
| 最近记录: |