如何解决如何仅将非常大的geojson数组中的前50个列表项添加到侧边栏,而不是全部添加到
我有一个很大的geojson文件位置(当前为1000个),我使用turf.js对它们进行排序,以便找到它们与地图上某个点的距离(由地理编码器触发)。这项工作有效,但是我打算按距离到边栏的距离添加已排序位置的结果,并且由于位置数量众多(计算运算),因此加载时间很长。这是当前代码:
[地方=包含所有信息的源geojson文件]
geocoder.on('result',function(ev) {
var searchResult = ev.result.geometry;
var options = { units: 'miles' };
//GIVES EACH PLACE A DISTANCE VALUE
places.features.forEach(function(place) {
Object.defineProperty(place.properties,'distance',{
value: turf.distance(searchResult,place.geometry,options),writable: true,enumerable: true,configurable: true
});
});
//GIVING EACH PLACE A VALUE IN ORDER OF CLOSEST TO FURTHEST
places.features.sort(function(a,b) {
if (a.properties.distance > b.properties.distance) {
return 1;
}
if (a.properties.distance < b.properties.distance) {
return -1;
}
return 0; // a must be equal to b
});
var listings = document.getElementById('listings');
while (listings.firstChild) {
listings.removeChild(listings.firstChild);
}
(the functions below go here)
(尝试创建一组新的较小位置,以放入下面的函数中-而不是使用整个“位置”文件)
//THIS FUNCTION ADDS THE SORTED PLACES TO THE SIDEBAR
buildLocationList(places);
createPopUp(places.features[0]);
});
因此,本质上,我试图根据地理编码器的结果创建一个本地存储的新列表,该列表比整个“位置” geojson文件小得多(可能包含50个最接近的位置,而不是每个单点位置) 。由此产生一个函数,我可以将其传递给buildLocationList函数,该函数将它们添加到侧边栏。
任何帮助将不胜感激(:
解决方法
尝试添加
localStorage.setItem('TopFiftyPlaces',JSON.stringify(places.slice(49)));
在对地点进行排序之后。
此行代码将占位的前50个元素,然后将其存储在本地存储中。
要检索存储的数组,您可以这样做:
const topFiftyPlaces = JSON.parse(localStorage.getItem('topFiftyPlaces'));
然后您可以像这样将topFiftyPlaces
变量而不是places
传递给buildLocationList:
buildLocationList(topFiftyPlaces);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。