3

我需要为 android 谷歌地图创建一个热图。我有地理定位和具有负和正权重的点,我想在视觉上表示它们。与大多数热图不同,我希望这些正负权重能够破坏性地干扰;也就是说,当两点彼此靠近并且一个为正而另一个为负时,它们的重叠会破坏性地干涉,实际上不会渲染完全抵消的区域。我计划使用 android 谷歌地图的 TileOverlay/TileProvider 类,该类具有基于给定位置和缩放创建/渲染图块的工作。(我对这部分没有问题。)

我应该如何去渲染这些瓷砖?我计划使用 java 的 Graphics 类,但我能想到的最好的方法是遍历每个像素,根据周围的数据点计算它应该是什么颜色,然后渲染那个像素。但是,这似乎非常低效,我正在寻找有关更好方法的建议。

编辑:我已经考虑了从在 WebView 中使用非 Android 谷歌地图到使用 TileOverlay 到使用 GroundOverlay 的所有内容。我现在正在考虑做的是拥有一个大型二维数组“正方形”。每个方格都有一个长、纬度和总 +/- 权重。添加新数据点时,不会将其准确呈现在哪里,而是将其添加到它所在的“正方形”中。该数据点的权重将添加到该正方形中,然后我将使用 GoogleMap用于在地图上渲染正方形的多边形对象。+ 点与 - 点的比率将决定渲染的颜色,接近 1:1 的比率表示清晰,>1 表示蓝色(冷点),<1 表示红色(热点)。编辑:也就是将数据聚集成小的区域组

4

1 回答 1

3

我建议尝试

遍历每个像素,根据周围的数据点计算它应该是什么颜色,然后渲染那个像素。

即使它很慢,它也会起作用。Tiles屏幕上没有太多像素,每个像素都没有太多,Tile所有这些都是在后台线程上完成的。

所有这一切仍然是翻译Bitmapbyte[]byte[]是 PNG 或 JPG 文件的表示形式,因此它不是来自Bitmap. 最后一个操作也需要一些时间,并且可能需要比整个算法更多的处理能力。

编辑(从评论中移出):

您在编辑中描述的内容听起来像是对 LatLng 的简单聚类。我不能说这是一个更好或更坏的主意,但值得一试。

于 2013-06-20T18:34:26.170 回答