确定多边形是否在地图边界内

我有一个很大的多边形列表(包括谷歌地图多边形选项),我想在绘制它们之前检查它们是否在屏幕范围内。

如何确定多边形是否在屏幕边界内。

像这样的东西:

List polygons = getPolygons(); LatLngBounds bounds = map.getProjection().getVisibleRegion().latLngBounds; for (int l = 1; l <= polygons.size(); l++) { if (bounds.Contains(polygons.get(l))) { map.addPolygon(polygons.get(l)); } } 

在此处输入图像描述 在此处输入图像描述

我想你不需要检查多边形中的每个点是否可见 – 你应该只做四个可以很容易计算的点:

在此处输入图像描述

每当用户移动地图时,你应该在地图上放置矩形边框在可见边界内的多边形; 像这样的东西:

 @Override public void onMapReady(GoogleMap googleMap) { map = googleMap; map.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() { @Override public void onCameraChange(CameraPosition cameraPosition) { showPolygons(); } }); showPolygons(); } private void showPolygons() { if (map == null) return; final LatLngBounds bounds = map.getProjection().getVisibleRegion().latLngBounds; for (PolygonOptionsWrapper wrapper : wrappers) { if (wrapper.within(bounds)) { if (!wrapper.isAdded()) { wrapper.addTo(map); } } else { if (wrapper.isAdded()) { wrapper.removeFrom(map); } } } } 

完整的源代码 。

在此处输入图像描述