需要概念性帮助渲染热图

时间:2013-06-20 17:35:12

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

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

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

编辑:我已经考虑过将所有内容从使用Web浏览器中的非Android谷歌地图到使用TileOverlay来使用GroundOverlay。我现在正在考虑做的是有一个大的二维数组“正方形”。每个方格都有一个长,纬度和总+/-权重。添加新数据点时,不会将其精确渲染到它所在的位置,而是将其添加到它所在的“方形”中。此数据点的权重将添加到正方形,然后我将使用GoogleMap多边形对象在地图上渲染方形。 +点与点的比率将确定所呈现的颜色,其中比率接近1:1是清晰的,> 1是蓝色(冷点),并且< 1是红色(热点)。 编辑:a.k.a。将数据聚类成小区域组

1 个答案:

答案 0 :(得分:3)

我建议尝试

  

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

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

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

编辑(从评论中移出):

您在编辑中描述的内容听起来像是LatLng上的简单群集。我无法说这是一个更好或更糟的想法,但它值得一试。