パフォーマンスの問題は、各マーカーが個別のDOM要素であることに起因します。ブラウザは何千ものレンダリングに苦労しています。あなたのケースでは
、簡単な回避策はCircle Markersを使用し、それらをキャンバス(例えばマップpreferCanvas
オプションを使用して、またはあなたのサークルマーカーのそれぞれについて、renderer
オプションとして渡す特定canvas renderer付き)でレンダリング持っている代わりになります。これはGoogle Mapsがデフォルトでどのように動作するかです。マーカーは実際にCanvasに描かれます。この解決策の
var map = L.map('map', {
preferCanvas: true
});
var circleMarker = L.circleMarker(latLng, {
color: '#3388ff'
}).addTo(map);
又は
var map = L.map('map');
var myRenderer = L.canvas({ padding: 0.5 });
var circleMarker = L.circleMarker(latLng, {
renderer: myRenderer,
color: '#3388ff'
}).addTo(map);
、各サークルマーカーは、もはや個々のDOM要素ではないが、その代わりにはるかに簡単である単一キャンバス上リーフレットによって描画されますブラウザのハンドル。
さらに、リーフレットはまだマウスの位置と関連イベントを追跡し、サークルマーカーの対応するイベントをトリガーします。このようなイベント(マウスのクリックなど)を引き続き聞くことができます。私が実際にしたい[leafletjsで140Kの点をプロット]のhttps://jsfiddle.net/sgu5dc0k/
可能な複製(http://stackoverflow.com/questions/37043791/plotting-140k-points-in-leafletjs) – ghybs
:100Kポイントで
デモ異なる特性を有する点またはマーカーを描くことができる。色、形など...オーバーレイを作成するだけではありません。 –
[キャンバス](http://leafletjs.com/reference-1.0.3.html#map-prefercanvas) – ghybs