我在传单中摄取一个大的geoJSON文件,其中有近19,000个特征(点)。这会在地图上造成大量混乱,并且难以管理。
目标是使用地理位置来标记我的位置,在其周围绘制5nm的圆,并且仅显示位于该几何体内的geoJSON要素。
我项目的精简版本是: https://jsfiddle.net/blintster/d2ucock2/3/
我找到了找到我的位置并绘制了圆圈,但我无法解析地理位置上的geoJSON功能。理想情况下,输出的功能如下:https://esri.github.io/esri-leaflet/examples/spatial-queries.html但是,该方法似乎只适用于L.esri.FeatureLayer,这是一个本地导入的geoJSON。
有问题的geoJSON图层位于[机场]为19,000个条目的位置:
var allairportsLayer = L.geoJson([airports], {
filter: airportFilter,
onEachFeature: function(feature, layer) {
layer.bindPopup(feature.properties.Type + " - " + feature.properties.FacilityName + "<br>Contact Info: " + feature.properties.Manager + "<br> Phone: " + feature.properties.ManagerPhone);
}
}).addTo(map);
function airportFilter(feature) {
if (feature.properties.State === "MD") return true
};
我能够通过状态使用过滤方法略微配对结果,但只允许我确定某个属性是否符合指定条件。
我还尝试了以下方法:https://www.mapbox.com/mapbox.js/example/v1.0.0/marker-radius-search/ 没有运气。
有没有人知道我可以尝试解析数据的任何其他方法,因此它只显示几何中的点?
答案 0 :(得分:1)
但是,该方法似乎只适用于L.esri.FeatureLayer,这是一个本地导入的geoJSON。
esri-leaflet捎带ArcGIS Server和ArcGIS Online服务,这些服务提供支持空间查询的后端托管数据库。
显然Esri并不是唯一的选择,但是当 有利于不获取您不打算显示的整个数据集时,您的用例就是一个完美的例子。
您可以创建一个arcgis developer account,然后登录arcgis.com将.geojson文件作为免费的新托管服务上传。
您可以找到另一个提供类似功能的托管服务
您可以运行自己的服务器,安装自己的PostGIS数据库并自行连接空间网页查询。
您可以继续在页面加载时下载所有19,000个功能,并且:
a)简化搜索并测试每个点是否相关L.latLngBounds.contains()
。
b)使用类似turf的内容来测试与实际圈子的关系。 (这里值得一提的一个警告是,传单不包含用于生成实际L.circle
几何的任何内置方法,因此您也需要更多自定义逻辑。我写了类似here的内容。欢迎来到ripoff)。