1

我在传单中摄取了一个大型 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 层位于 [airports] 是 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/ 没有运气。

有谁知道我可以尝试解析数据以使其仅显示位于几何图形中的点的任何其他方法?

4

1 回答 1

1

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

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

显然 Esri 不是唯一的选择,但您的用例是一个完美的例子,说明不获取您不打算显示的整个数据集是有益的。

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

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

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

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

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

    b)使用类似草皮的东西来测试与实际圆圈的关系。(这里值得一提的一个警告是,传单不包含任何用于生成实际L.circle几何图形的内置方法,因此您也需要更多自定义逻辑。我在这里写了类似的东西,欢迎您敲竹杠)。

于 2017-04-28T16:25:41.333 回答