当通过GetClusteredShapes方法检索集群规范时,为什么GetClusterShape返回null?

时间:2009-04-22 15:20:54

标签: javascript virtual-earth

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

当我调用GetClusteredShapes方法时,我得到一组VEClusterSpecification个对象,这些对象代表我当前可见的每个群集;没问题。但是当我调用GetClusterShape()方法时,它返回null ... null!为什么它会这样做呢?我使用firebug来确认那个应该保存对形状的引用的VEClusterSpecification的私有变量确实为null,因此它不是引起问题的方法。

Some have suggested这实际上是记录在案的行为

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

但是看看当前的MSDN documentation for the VEShape class它说:

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

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

2 个答案:

答案 0 :(得分:0)

我知道它是sux ...我仍在查看代码但是我可以告诉他们希望您使用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);
}

答案 1 :(得分:0)

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

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

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