Android Google Maps API的Heatmap叠加层以像素为单位渲染半径,这意味着通过放大和缩小半径会越来越大。
我需要一个固定半径的热图(例如,以米为单位而不是像素),并且在放大和缩小时不会重新缩放。
有可能这样做吗?
答案 0 :(得分:0)
在googlemap API中,获取比例数据。在用户界面中,您可以看到说明地图比例的图例。这样的东西-(在Google Maps右下角查看,我在下面谈论2000Ft问题)
您知道手机屏幕的厘米长度,知道完整宽度的像素,所以
cm(phoneScreen)->厘米/像素比率->像素半径到厘米半径。
我可以用一些数学推论得出。
答案 1 :(得分:0)
据我所见,您可以使用setRadius()方法来更改热图位置的半径,以响应更改的缩放比例。像这样:
int DEFAULT_ZOOM_LEVEL = 10;
int ZOOM_STEP_FOR_RADIUS = 2;
mProvider = new HeatmapTileProvider.Builder()
.data(mList)
.setRadius(DEFAULT_ZOOM_LEVEL)
.build();
mOverlay = mMap.addTileOverlay(new TileOverlayOptions().tileProvider(mProvider));
mMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener({
@Override
void onCameraIdle() {
float newZoom = mMap.getCameraPosition().zoom;
mProvider.setRadius(DEFAULT_ZOOM_LEVEL + newZoom * ZOOM_STEP_FOR_RADIUS)
mOverlay.clearTileCache();
}
});