自定义虚拟地球聚类

时间:2008-11-02 21:12:55

标签: javascript virtual-earth

我想使用此Virtual Earth JavaScript API实现我自己的群集算法:http://msdn.microsoft.com/en-us/library/cc966716.aspx 但是,VE引擎会为图层中的每个形状调用一次集群函数。这让它很慢! 在我看来,VE应该将所有形状放入一个图层,然后让我的函数对它们进行聚类。不要多次调用群集!

为什么VE引擎会这样做?是否有另一种方法可以使用此API进行客户端群集?

更多信息:我正在从GeoRSS Feed中加载形状。

2 个答案:

答案 0 :(得分:1)

每个VEShapeLayer应该只调用一次代码 - 否则,群集是没有意义的,因为你不能聚集一个形状。您是否使用VEMap.AddShape而不是将VEShape对象添加到VEShapeLayer?如果是这样,请尝试创建单个VEShapeLayer,将其添加到VEMap,然后将所有VEShape对象添加到形状图层而不是地图。

答案 1 :(得分:1)

自定义聚类算法方法只会为该VEShapeLayer调用一次。

Adam Byram, 使用VEMap.AddShape方法和将VEShapeLayer添加到包含所有Shapes的地图之间没有太大区别。 AddShape方法将Shape添加到“默认”ShapeLayer,即具有0(零)索引的ShapeLayer,并添加VEShapeLayer以及现有“默认”图层添加新图层。

如果您使用VEMap.AddShape将VEShape对象添加到地图中,则每次将VEShape添加到Map时,它都会调用您的clusting算法方法。这是正确的行为,因为每次添加形状时都需要重新计算聚类。

在将所有形状添加到地图时提高整体性能,并在添加所有形状时让VE仅调用一次自定义算法方法;您可以创建一个VEShapeLayer,将所有形状添加到其中,然后将该形状图层添加到地图中。这将导致VE仅对所有形状进行渲染(在加载所有形状时),而不是每次添加单个VES形状。