MarkerClustererPlus を使用して数十万点をプロットしています。また、表されるマーカーの数ではなく、何らかの外部プロパティに基づいてクラスター アイコン (色) のグループを設定したいと考えています。
これを行う唯一の方法は、複数の MarkerClusterer オブジェクトを作成して別のoptions
オブジェクトを渡すことですが、そうするとパフォーマンスが大幅に低下する気がします。より良い方法はありますか?
上の画像では、139、24、および 5 を黄色に、213、25、30、および 2 を赤にします。可能であれば、setOptions を使用してスタイル/オプションを更新します。
mc.group[0].setOptions({"url": imgPath +lookupThreshold(severity)+ '.svg' });
mc.group[1].setOptions({"url": imgPath +lookupThreshold(severity)+ '.svg' });
PS誰かが興味を持っている場合は、svg画像を提供し、オプションオブジェクトの幅と高さを増やすことにより、クラスターアイコンがそのサイズに合わせてスケーリングされるようにライブラリを微調整しました†</sup>:
var mcOptions = {
"styles": [{
"height": 19,
"url": img/map/clusters/",
"width": 19
},{
"height": 24,
"url": img/map/clusters/",
"width": 24
}, {…}]
};
for ( var s = mcOptions.styles.length-1; s >= 0; s-- )
{ mcOptions.styles[s].url += lookupThreshold(severity) + '.svg'; }
// lookupThreshold switches severity and returns a string: red, orange, …
次に、以下を に追加しますmarkerclusterer.js
。
line 275: this.backgroundSize_ = style.backgroundSize || "contain";
line 300: style.push('background-size:' + this.backgroundSize_ + ';');
†</sup> Ffx 19.0.2、Chrome 26.x、Chrome Canary 28.x、Safari 6.0.2、IE 9.0.8 で動作します (Opera 12.15 では動作しません)。
編集MarkerClusterer の複数のインスタンスを作成しても、パフォーマンスに大きな影響はないようです。ただし、MC に渡されるプロパティ/オプション オブジェクトは、MCのインスタンス間で共有されているようです。
解決済み665 行目付近の MarkerClustererPlus ライブラリを変更してクローンを作成する必要がありましたopt_options
(ライブラリは参照を使用していたため、以前のすべての opt_options が最新/最後に渡されたオプションで上書きされていました)。