首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >热图算法?

热图算法?
EN

Stack Overflow用户
提问于 2010-02-27 01:57:36
回答 4查看 24K关注 0票数 12

我有一个值列表,每个值都有纬度和经度。我希望创建一个半透明的热图图像覆盖在谷歌地图上。我知道已经有了服务器端和基于flash的解决方案,但我想使用canvas标签在javascript中构建它。

但是,我似乎找不到用于将坐标和值转换为热图的算法的简明描述。任何人都可以提供或链接到其中之一吗?

谢谢。

EN

回答 4

Stack Overflow用户

发布于 2010-02-27 02:12:14

基本思想是创建一个网格,并将以后每个lng坐标投影到该网格。我会使用一个二维整数数组。

psuedo-code为:

代码语言:javascript
复制
for each coord
  cell = coord projected to grid
  increment cell value
end

for 0 to # of passes
  for each row
   for each col
     if grid[row,col] > 0 then
       grid[row,col] += 1
       increment_adjacent_cells(row, col)
     end
   end
  end
end

因此,我们的想法是,int值越高,该单元格就越热。increment_adjacent_cells应该递增所有8个相邻单元格中的值。

票数 9
EN

Stack Overflow用户

发布于 2010-03-27 23:46:42

我尝试在javascript中使用canvas元素来解决这个问题,下面是我当前的结果:

http://gist.github.com/346165

我必须修复高斯滤波器和颜色映射,因为它目前不能提供好的结果。

票数 4
EN

Stack Overflow用户

发布于 2018-09-22 01:47:06

构建热图的一种更快的方法是使用队列:

伪码:

代码语言:javascript
复制
Add an element to queue (first in heatmap(x,y, val))
While (!queue.isEmpty())
{
    elem = queue.pop()
    queue.push(elem.x + 1, elem.y, val-1)
    queue.push(elem.x - 1, elem.y, val-1)
    queue.push(elem.x, elem.y + 1, val-1)
    queue.push(elem.x, elem.y - 1, val-1)
}

这节省了大量的迭代!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2343681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档