我想在图像上创建一个热图(密度图)。像http://www.heatmapapi.com/Sample_Google.aspx中的例子就是我尝试做的很好的例子。
是否有GWT方式实现这一目标?或者您可以建议的任何好的(flash或js)解决方案(除了提到Heatmap Tools For Web Apps之外的其他解决方案)?
答案 0 :(得分:1)
我为我的最后一年大学项目实施了类似的东西。我使用与HeatMap API相同的方法,在重新定位时将生成的图像覆盖在地图上。
我编写了一个自定义Java Web服务器,接受查询字符串中的边界框坐标,以生成看起来有点像热图的半透明PNG图像,但它绝不是一个正确的统计上正确的算法。当时我无法找到任何用于创建热图的算法,在线或期刊中发现的许多算法实际上都是集群热图/树图而不是密度热图。
我为数据生成了一个2D数组,使用函数将每个坐标映射到一个值。添加到数组会增加值,因此需要将数组规范化为0-255之间的值,然后可以轻松地将其着色并输出到画布上。恐怕我找不到这个的源代码,算法非常近似。
大约一年前,当BNP(种族主义英国政党)的成员名单被泄露时,我遇到了另一个(更简单,但可能更不准确)解决方案,在每个引脚点放置了一个PNG热点,创造了热图的效果。这里有截图,虽然我找不到原始地图http://www.labourlist.org/revealed_the_bnps_social_media_strategy_mark_hanson
答案 1 :(得分:0)
据我所知,GWT中没有任何设计用于制作热图,至少在官方SDK中没有。 我想说最快的是将现有的JS解决方案集成为本机函数,并使用当前的GWT代码。
答案 2 :(得分:0)
本质上有两种方式。一个是直接来自GWT的“hacky”而不是非常优雅的方式,另一个使用Google Visualization API。
hacky方式涉及构建表并将数据放入其中。此外,您需要决定如何将数据值“bin”到范围中,然后将颜色分配给bin(您在CSS文件中指定)。随后使用列/行格式化程序将相应的CSS附加到表格单元格。我实际上已经在GWT中以这种方式完成了热图,它可以工作....
非hacky方式是转到Google Visualisations API并使用JSNI包装GWT中已存在的热图。