java - 需要概念性帮助来渲染热图

标签 java android graphics google-maps-android-api-2

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

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

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

最佳答案

我建议尝试

going through each pixel, calculating what color it should be based on the surrounding data points, and rendering that pixel.

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

这一切之后仍然是将Bitmap翻译成byte[]byte[] 是 PNG 或 JPG 文件的表示,因此它不是 Bitmap 的简单像素映射。最后一个操作也需要一些时间,并且可能需要比整个算法更多的处理能力。

编辑(从评论中移出):

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

关于java - 需要概念性帮助来渲染热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17220151/

相关文章:

java - 如何使用ehcache或JCS作为队列或流式缓存?

android - TextInputLayout 密码切换监听器

algorithm - 如何在 3D 网格中线性迭代?

java - 如何在java中使用另一个程序执行cmd命令

java - 如何解决代码中的不兼容类型

android - 我怎样才能得到我在android中知道其包名的其他应用程序的uid?

android - 在不重新创建 Activity 的情况下更改 Activity 的主题

c++ - OpenGL 纹理未在模型上正确渲染

android - 如何从绘制到位图中的文本中删除伪影

java - Web应用程序中序列化的目的