私は5000以上のLatLngポイントを持っており、それぞれについてどのフィーチャー(地域)が属しているかを調べたいと思います。機能はa kmz layer by Philippe Ivaldiから来て、GeoJSONに変換されます。いくつかの機能で多くの点を共有する最も良い方法は?
現在、私は二重のfor
ループでturfjsでこれをやっています。予想どおり、計算はブラウザを10分間フリーズしますが、これはあまり便利ではありません。
は、ここに私のコードです:
function countCeaByLayer(geoJsonLayer){
jQuery.getJSON('http://localhost/server/retrieveData.php', function(data){
var turfPoints = [];
for(var i = 0; i < data.length; i++){
turfPoints.push(turf.point([data[i].longitudeWGS84, data[i].latitudeWGS84]));
}
var features = geoJsonLayer.toGeoJSON().features;
for(var i = 0; i < features.length; i++){
var turfPointsNew = [];
for(var j = 0; j < turfPoints.length; j++){
var isInside = turf.inside(turfPoints[j], features[i]);
if(!isInside) turfPointsNew.push(turfPoints[j]);
}
turfPoints = turfPointsNew;
}
console.log("done");
});
}
私は、ブラウザの凍結を回避するために行うことができますか?
- それは非同期作りますか?
- サーバー上で
node
とturfjs
の計算を行いますか? - それとも
node
とleaflet-headless
でサーバー上のleafletjs
を展開?
...または私はただと対処する必要があります?
ありがとうございます!
*ピーナッツ*私はちょうど私のジオコーディングプロバイダが私にLatlngsを 'string'で与えることに気づきました。それらを「フロート」にキャストすると、計算が数秒で実行されます。 ** head slam **まだ、私はあなたのアルゴリズムを試してみたら、あなたに戻ってきます。ありがとう! –
これは高速です。よくやった。 –