确定多边形是否在地图边界内
我有一个很大的多边形列表(包括谷歌地图多边形选项),我想在绘制它们之前检查它们是否在屏幕范围内。
如何确定多边形是否在屏幕边界内。
像这样的东西:
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); } } } }
完整的源代码 。