我有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没有警告!将它们投入“浮动”可以在几秒钟内完成计算。 **头部满贯**但是,一旦我尝试过你的算法,我会尽快回复你,这确实会提供一个很好的速度提升。谢谢! –
速度更快。做得好。 –