假设我有一个名为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对象
这是一个错误还是一个功能?是否有任何已知的解决方法或(如果它是一个错误)一些计划何时要修复它?
答案 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;
如果您找到其他方式,请通知我们; - )