1

假设我有一个名为的虚拟地球形状层shapeLayer1(我的创造力显然处于历史最低点)。

当我调用该GetClusteredShapes方法时,我得到一组VEClusterSpecification对象,这些对象代表我当前可见的每个集群;那里没问题。但是当我调用该GetClusterShape()方法时,它返回 null ... null!为什么它会那样做?我使用萤火虫来确认VEClusterSpecification应该持有对形状的引用的私有变量确实为空,所以这不是导致问题的方法。

有些人认为这实际上是记录在案的行为

如果从 VEShapeLayer.GetClusteredShapes 方法返回了 VEClusterSpecification 对象,则返回null

但是查看VEShape 类的当前MSDN 文档,它说:

返回是否从 VEShapeLayer.GetClusteredShapes 方法返回了 VEClusterSpecification 对象

这是错误还是功能?是否有任何已知的解决方法或(如果是错误)计划何时修复它?

4

2 回答 2

0

我知道它...我仍在查看代码,但据我所知,他们希望您使用 VEClusteringOptions 回调方法设置自定义内容。这对我不起作用,因为我使用的是自定义信息框,但它可能对其他人有所帮助,使用下面的方法,您可以完全访问集群内的形状。

function clusteringCallback(clusters)
{
   for (var i=0; i < clusters.length; ++i)
   {
        var cluster = clusters[i];
        var clusterShape = cluster.GetClusterShape();
        clusterShape.SetCustomIcon("<div class='cluster'><div class='text'>"+cluster.Shapes.length+"</div></div>");
        clusterShape.SetTitle("This is my Cluster #" + i);
        clusterShape.SetDescription("This cluster has " + cluster.Shapes.length + " shapes in it!");
   }
}

function SetClustering() 
{
    var options =  new VEClusteringOptions();
    options.Callback = clusteringCallback;
    shapeLayer.SetClusteringConfiguration(VEClusteringType.Grid, options);
}
于 2010-03-12T18:45:35.327 回答
0

如果您需要从 clustershape 所属的图层中获取图层 ID,可以这样做:

var layerId = clusters[i].Shapes[0].GetShapeLayer().MsnId;

如果您找到其他方式,请通知我们 ;-)

于 2010-04-28T13:41:08.213 回答