2008-11-02 65 views
1

我想使用这个Virtual Earth JavaScript API实现我自己的群集算法:http://msdn.microsoft.com/en-us/library/cc966716.aspx 但是,VE引擎为图层中的每个图形调用一次群集函数。这使它非常缓慢! 在我看来,VE应该把所有的形状放到一个图层中,然后让我的函数把它们聚类在一起。不重复调用集群!自定义虚拟地球群集

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

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

回答

1

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

Adam Byram, 使用VEMap.AddShape方法和将VEShapeLayer添加到具有所有Shapes的地图之间没有太大区别。 AddShape方法将Shape添加到“默认”ShapeLayer,该ShapeLayer是具有0(零)索引的ShapeLayer,添加VEShapeLayer除了添加现有的“默认”图层外,还添加了新图层。

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

在将所有形状添加到地图时提高总体性能,并且在添加所有形状时仅让VE调用您的自定义算法方法一次;您可以创建VEShapeLayer,将所有形状添加到它,然后将该形状图层添加到地图。这将导致VE只做一次所有形状的渲染(在全部加载时),而不是每次添加单个VEShape。

1

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