我想使用这个虚拟地球 javascript API 实现我自己的聚类算法:http: //msdn.microsoft.com/en-us/library/cc966716.aspx 但是,VE 引擎为层中的每个形状调用一次我的聚类函数. 这使它非常慢!在我看来,VE 应该将所有形状放入一个图层中,然后让我的函数将它们聚类。不能重复调用集群!
为什么VE引擎会这样做?是否有另一种方法可以使用此 API 进行客户端集群?
更多信息:我正在从 GeoRSS 提要加载形状。
我想使用这个虚拟地球 javascript API 实现我自己的聚类算法:http: //msdn.microsoft.com/en-us/library/cc966716.aspx 但是,VE 引擎为层中的每个形状调用一次我的聚类函数. 这使它非常慢!在我看来,VE 应该将所有形状放入一个图层中,然后让我的函数将它们聚类。不能重复调用集群!
为什么VE引擎会这样做?是否有另一种方法可以使用此 API 进行客户端集群?
更多信息:我正在从 GeoRSS 提要加载形状。
每个 VEShapeLayer 应该只调用一次您的代码 - 否则,聚类是没有意义的,因为您不能对单个形状进行聚类。您是否使用 VEMap.AddShape 而不是将 VEShape 对象添加到 VEShapeLayer?如果是这样,请尝试创建单个 VEShapeLayer,将其添加到 VEMap,然后将所有 VEShape 对象添加到形状层而不是贴图。
自定义聚类算法方法只会为该 VEShapeLayer 调用一次。
Adam Byram,使用 VEMap.AddShape 方法和将 VEShapeLayer 添加到包含所有形状的地图之间并没有太大区别。AddShape 方法将 Shape 添加到“默认”ShapeLayer,即索引为 0(零)的 ShapeLayer,添加 VEShapeLayer 会在现有“默认”图层的基础上添加一个新图层。
如果您正在使用 VEMap.AddShape 将 VEShape 对象添加到地图,那么每次将 VEShape 添加到地图时,它都会调用您的聚类算法方法。这将是正确的行为,因为每次添加形状时都需要重新计算聚类。
在将所有形状添加到地图时提高整体性能,并让 VE 在添加所有形状时只调用一次您的自定义算法方法;您可以创建一个 VEShapeLayer,将所有形状添加到其中,然后将该形状图层添加到地图中。这将导致 VE 只对所有形状进行一次渲染(在全部加载时),而不是每次添加单个 VEShape 时。