代码之家  ›  专栏  ›  技术社区  ›  Andrew Davey

自定义虚拟地球群集

  •  1
  • Andrew Davey  · 技术社区  · 17 年前

    我想使用这个虚拟地球javascript API实现我自己的聚类算法: http://msdn.microsoft.com/en-us/library/cc966716.aspx 然而,VE引擎对层中的每个形状调用一次我的集群函数。这使得它非常慢! 在我看来,VE应该将所有形状放在一个层中,然后让我的函数对它们进行聚类。不要重复调用集群!

    为什么VE发动机会这样做?是否有其他方法可以使用此API进行客户端集群?

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

    2 回复  |  直到 17 年前
        1
  •  1
  •   Adam Byram    17 年前

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

    亚当·拜拉姆, 使用VEMap之间没有太大区别。AddShape方法,并将VEShapeLayer添加到包含所有形状的地图中。AddShape方法将Shape添加到“默认”ShapeLayer,即索引为0(零)的ShapeLayer,添加VEShapeLayer会在现有的“默认”层之外添加一个新层。

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

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

        2
  •  1
  •   Chris Pietschmann    17 年前

    它应该在每个VEShapeLayer中只调用一次代码——否则,集群是没有意义的,因为你不能对单个形状进行集群。您正在使用VEMap吗。添加Shape而不是将VEShape对象添加到VEShapeLayer?如果是这样,请尝试创建一个VEShapeLayer,将其添加到VEMap中,然后将所有VEShape对象添加到形状层而不是贴图中。

    推荐文章