0
クラスタリングの実装を検討しています。アイテムがクリックされたときに、そのアイテムをビューの中央に配置し、そのピンの情報ボックスをポップアップするリストがあります。ピンが現在クラスタリングされている場合は、クラスタが平均的な位置であるため、インフォボックスが潜在的に潜在的に外れて見えることになります。Bing Mapsノーマルピンがどのクラスタピンにあるかを知る方法
クラスターレイヤーからクラスター化されたピンだけを取得する方法はありますか?
は、私の解決策が見つかり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].
}
}
}
}
あなたはあなたの主なピンのクラスタへの参照を使用して、クラスタのプッシュピンのコールバックは、物事をスピードアップするときに組み合わせることができます。
function clusterCallBack(cluster)
{
var contained = primitives[i].containedPushpins;
for(var j = 0;j < contained.length;j++)
{
contained[j].metadata = { cluster: cluster };
}
}
O(n^2)またはO(n)からO(n)またはO(1)までのいくつかの処理を高速化します。
残念ながら、これはクラスタ化されたプッシュピンの位置からのクリックです。私は、地図に直接添付されていないメニュー項目からクリックが来るようにしたい。線形検索がうまくいくはずの項目が十分に少ないです。私は、現在のクラスター化されたすべてのピンをクラスターレイヤーから取得する方法は見当たりません。 – user2927848
私はそれを理解して、プリミティブを通過するときにinstanceof Microsoft.Maps.ClusterPushpinを使用することができます。また、スピードアップのためにカスタムクラスタープッシュピンを作成するときに、ピンへの参照を追加します。ありがとうrbrundritt。 – user2927848