我有5000多個LatLng點,對於他們每個人我想知道他們屬於哪個特徵(區域)。這些功能來自a kmz layer by Philippe Ivaldi,轉換爲GeoJSON。分享多項功能的最佳途徑?
目前,我正在使用turkjs在雙for
循環中執行此操作。如預期的那樣,計算將瀏覽器凍結十分鐘,這不是很方便。
這裏是我的代碼:
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,顯然減緩turfjs沒有警告!將它們投入「浮動」可以在幾秒鐘內完成計算。 **頭部滿貫**但是,一旦我嘗試過你的算法,我會盡快回復你,這確實會提供一個很好的速度提升。謝謝! –
速度更快。做得好。 –