Google maps 仅渲染视图边界内的多边形:Google Maps Android
我有一些可点击的多边形作为阵列列表。是否有方法渲染视图边界内的多边形,即仅在缩放级别可见?而不是渲染所有多边形。您可以在禁用visibile的情况下将多边形添加到地图中,并根据google地图摄影机的更改使其可见Google maps 仅渲染视图边界内的多边形:Google Maps Android,google-maps,google-maps-android-api-2,Google Maps,Google Maps Android Api 2,我有一些可点击的多边形作为阵列列表。是否有方法渲染视图边界内的多边形,即仅在缩放级别可见?而不是渲染所有多边形。您可以在禁用visibile的情况下将多边形添加到地图中,并根据google地图摄影机的更改使其可见 Polygon polygon = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(0, 0)) .s
Polygon polygon = map.addPolygon(new PolygonOptions()
.add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(0, 0))
.strokeColor(Color.RED)
.fillColor(Color.BLUE)
.visibility(false);
将摄影机更改侦听器添加到GoogleMap实例
googleMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
if (cameraPosition.zoom > 12) { // Your zoom level to show polygon
polygon.setVisible(true);
}
}
});
如果需要,可以实施其他情况,因为CameraPosition在缩放级别之外有更多数据。希望有帮助:)
编辑要改进对许多多边形的处理,可以将所有多边形放在arraylist中,并在更改摄影机后检查应显示的多边形:
List<Polygon> polygons = new ArrayList<>();
polygons.add(map.addPolygon(new PolygonOptions()
.add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(0, 0))
.strokeColor(Color.RED)
.fillColor(Color.BLUE)
.visibility(false)); //Repeat for as many as you have
注意我认为这应该行得通,但我没有测试,希望它有帮助:)你可以在禁用visibile的情况下将多边形添加到地图中,并根据google地图摄像头的更改使其可见
Polygon polygon = map.addPolygon(new PolygonOptions()
.add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(0, 0))
.strokeColor(Color.RED)
.fillColor(Color.BLUE)
.visibility(false);
将摄影机更改侦听器添加到GoogleMap实例
googleMap.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition cameraPosition) {
if (cameraPosition.zoom > 12) { // Your zoom level to show polygon
polygon.setVisible(true);
}
}
});
如果需要,可以实施其他情况,因为CameraPosition在缩放级别之外有更多数据。希望有帮助:)
编辑要改进对许多多边形的处理,可以将所有多边形放在arraylist中,并在更改摄影机后检查应显示的多边形:
List<Polygon> polygons = new ArrayList<>();
polygons.add(map.addPolygon(new PolygonOptions()
.add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(0, 0))
.strokeColor(Color.RED)
.fillColor(Color.BLUE)
.visibility(false)); //Repeat for as many as you have
注意我认为这应该有效,但我没有测试它,希望它有帮助:)这是有帮助的。但对于100个多边形,似乎更“硬编码”。你知道还有其他选择吗?更新了我的答案,happy Codeing:)你检查过了吗,将多边形的数量减少到可见多边形是否会对性能产生影响?我假设maps API也有一些优化,这避免了花费时间“绘制”不可见多边形。或者出于哪些其他原因,您希望减少多边形的数量?我没有在代码中检查它,但我认为使用此方法可能会降低性能。我不确定谷歌是否对此进行了优化,但我猜他们不会这样做。这是有帮助的。但对于100个多边形,似乎更“硬编码”。你知道还有其他选择吗?更新了我的答案,happy Codeing:)你检查过了吗,将多边形的数量减少到可见多边形是否会对性能产生影响?我假设maps API也有一些优化,这避免了花费时间“绘制”不可见多边形。或者出于哪些其他原因,您希望减少多边形的数量?我没有在代码中检查它,但我认为使用此方法可能会降低性能。我不确定谷歌是否对此进行了优化,但我猜他们没有