2017-03-09 42 views
0

我正在考慮實施集羣。我們有一個列表,當點擊某個項目時,我們希望將它置於視圖中,並在該針上彈出一個信息框。事情是,如果引腳當前聚集在一起,信息框將出現在位置上,因爲該聚類是平均位置。必應地圖如何辨別正常引腳在哪個集羣引腳內

有沒有辦法從集羣層獲取聚集引腳?

發現我的解決方案

var PinYouAreMatching;//wherever you have this coming from 
var primitives = clusterLayer.getPrimitives(); 
for(var i = 0;i < primitives.length;i++) 
{ 
    if(primitives[i] instanceof Microsoft.Maps.ClusterPushpin) 
    { 
    var contained = primitives[i].containedPushpins; 
    for(var j = 0;j < contained.length;j++) 
    { 
     if(PinYouAreMatching === contained[j]) 
     { 
      //You found the cluster your pin is at eg. primitives[i]. 
     } 
    } 
    } 
} 

可以結合起來,與在您的主銷集羣引用時羣集圖釘回調加快速度。加快O(n^2)或O(n)降至O(n)或O(1)的某些東西的速度。

回答

0

如果將事件添加到羣集圖釘,事件處理程序將接收羣集圖釘,並且您可以使用它的位置來顯示信息框。這是一個代碼示例:

clusterLayer = new Microsoft.Maps.ClusterLayer(pins, { 
    clusteredPinCallback: function(cluster){ 
     Microsoft.Maps.Events.addHandler(cluster, 'click', function(e){ 
      //This is how you get the location of the cluster. 
      var loc = e.target.getLocation(); 

      //Show your infobox here 
     }); 
    } 
}); 
+0

不幸的是,這涉及到從羣集圖釘的位置單擊。我希望點擊來自不直接附加到地圖上的菜單項。有一個足夠小的數量的項目線性搜索應該罰款。我只是沒有看到從集羣層獲取所有當前羣集引腳的方法。 – user2927848

+0

我想通了,我可以使用instanceof Microsoft.Maps.ClusterPushpin時,通過原語,我很好。當我創建自定義羣集推針以加快速度時,還要添加一些引用。感謝rbrundritt。 – user2927848