2009-04-22 39 views
1

假設我有一個名爲shapeLayer1的虛擬地球形狀圖層(我的創意能量顯然處於歷史最低水平)。爲什麼GetClusterShape在通過GetClusteredShapes方法檢索到集羣規範時返回null?

當我打電話給GetClusteredShapes的方法,我得到一個VEClusterSpecification對象的數組,代表我目前可見的每一個羣集;那裏沒有問題。但是當我調用GetClusterShape()方法時,它返回null ... null!爲什麼它會這樣做?我使用了螢火蟲來確認VEClusterSpecification的私有變量應該保存對形狀的引用,它確實是空的,所以它不是造成問題的方法。

Some have suggested,這實際上是記錄的行爲

返回 如果VEClusterSpecification對象從VEShapeLayer.GetClusteredShapes方法

返回,但看目前的MSDN documentation for the VEShape class它說:

如果返回從VEShapeLayer.GetClusteredShapes方法返回VEClusterSpecification對象

這是一個錯誤還是一個功能?是否有任何已知的解決方法或(如果它是一個錯誤)有些計劃什麼時候解決它?

回答

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); 
} 
0

如果您需要從該簇形屬於你可以做這樣的層得到的層ID:

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

,如果你找到另一種方式,請通知我們;-)