我在Flex 3.5中使用了heatMap,但是我遇到了巨大的性能问题,因为我试图在地图中设置3.000到10.000个标记。在地图开始渲染过程的那一刻,浏览器会碰撞。
我正在使用的实现是一个GoogleMpas实现,由“flex epiphanies”创建,我以http://sunild.com/proto/Earthquakes2/Earthquakes.html为基础。
基本上我的实现调用一个服务来调用服务器端的ZipCode latLon生成器来计算我必须显示的每个注册表的latLon,它返回一个大数组(在3.000到10.000个项目之间)每个项目都有一个纬度和一个经度,因为我需要展示每一个标记。
我遇到的问题是在地图中渲染项目,因为我正在调用的服务非常快。
我不知道这是否是实施heatMap的最佳方式,但我确信当标记数量超过3.000时效果不高。
如果有人能给我建议或其他热图实施,我将非常感谢你的支持.3
答案 0 :(得分:0)
当你说你要展示每一个标记时,你的意思是什么?您尝试构建的这个东西可能会有两种优化方式:
1)聚合服务器端。当服务器可以更快地完成它时,无需将那么多处理留给闪存。如果你不需要显示每个点 - 并且只需要热图本身 - 看看你是否可以修改它以获取已经聚合的标记计数数组,也许是几个lats / longs square范围内的“块”。如果你没有显示关于每个点的某些特定类型的信息,我认为你实际上不必“显示每一个标记”。如果您直接从某些服务中提取数据而无法控制,也许您可以创建一个简单的中间层,以便在将数据传递给闪存之前对其进行聚合。
2)优化热图功能。如果您了解足够多的Actionscript,我建议将热图代码移植到纯AS3 - 如果它不是太复杂,可能是整个项目;对于10,000点你需要很多Flex框架将吞噬的资源。如果你是一个疯狂的算法主义者,你可能会看到其他一些优化方法,但如果不是,我只会阅读Grant Skinner(http://gskinner.com/blog)的很多帖子,因为优化动作脚本都是那家伙谈论过。
我正在做类似的事情,必须处理数千到数十万的点数,这就是我要采取的方法。