在传单

时间:2017-04-27 12:02:09

标签: javascript leaflet geojson esri-leaflet esri-oss

我在传单中摄取一个大的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/ 没有运气。

有没有人知道我可以尝试解析数据的任何其他方法,因此它只显示几何中的点?

1 个答案:

答案 0 :(得分:1)

  

但是,该方法似乎只适用于L.esri.FeatureLayer,这是一个本地导入的geoJSON。

esri-leaflet捎带ArcGIS Server和ArcGIS Online服务,这些服务提供支持空间查询的后端托管数据库。

显然Esri并不是唯一的选择,但是当 有利于不获取您不打算显示的整个数据集时,您的用例就是一个完美的例子。

  1. 您可以创建一个arcgis developer account,然后登录arcgis.com将.geojson文件作为免费的新托管服务上传。

  2. 您可以找到另一个提供类似功能的托管服务

  3. 您可以运行自己的服务器,安装自己的PostGIS数据库并自行连接空间网页查询。

  4. 您可以继续在页面加载时下载所有19,000个功能,并且:

    a)简化搜索并测试每个点是否相关L.latLngBounds.contains()

    b)使用类似turf的内容来测试与实际圈子的关系。 (这里值得一提的一个警告是,传单不包含用于生成实际L.circle几何的任何内置方法,因此您也需要更多自定义逻辑。我写了类似here的内容。欢迎来到ripoff)。