【发布时间】:2019-06-08 23:20:14
【问题描述】:
我目前正在编写一个热图应用程序,该应用程序将 Google Maps SDK 与动态数据结合使用。
热图强度基于梯度与数据的相对最大值的插值[*]
对于动态数据,我知道将要到达的值的上限和下限,但我不知道它们何时会出现。
例如,1 是可能的最低值,10 是可能的最高值。
我可以接收 {1,1,2,4,5} 的数据,然后下一个数据到达可以使数据 {1,1,2,4,5,10}。因为热图强度是相对的,这会导致渐变/热图改变颜色(因为它是相对的)。
对于 {1,1,2,4,5} 的数据实例。值 5 将表示为可能的最高强度,而我希望它与绝对可能的强度 (10) 相关。
我尝试在附近添加 LatLng 对作为数据的上限和下限,但这会影响数据的不透明度,因为它往往基于像素密度。并且谷歌地图的android SDK缺少MaxIntensity功能。
List<WeightedLatLng> list = new ArrayList<WeightedLatLng>();
// ... do stuff to add all the formatted data to list
// 10 represents total maximum, add this onto end of data list for scaling
list.add(new WeightedLatLng( new LatLng(0,0),10));
mProvider = new HeatmapTileProvider.Builder().weightedData(list).gradient(gradient).build();
// Add a tile overlay to the map, using the heat map tile provider.
overlay = mMap.addTileOverlay(new TileOverlayOptions().tileProvider(mProvider));
[*]https://developers.google.com/maps/documentation/android-sdk/utility/heatmap
[**]https://developers.google.com/maps/documentation/javascript/heatmaplayer
【问题讨论】:
-
似乎你必须改变梯度才能获得所需的效果,随着当前数据最大值接近 10 而更新。
标签: java android google-maps google-maps-android-api-2 android-maps-v2