Leaflet-Omnivore 使外部 file.geojson 可用于 javascript 变量

Leaflet-Omnivore make external file.geojson available to javascript variable

我正在对这些数据使用 Omnivore extension to load my GeoJSON files into a Mapbox/ Leaflet map. Later, I'm using Turf.js

我正在将外部 GeoJSON 文件作为 customLayer 加载到地图中,但在变量 pts 中提供 GeoJSON 数据供以后使用时遇到问题。

var polyLayer = L.geoJson(null, {
    style: function(feature) {
        return { color: '#f00', weight: 1, opacity: 0.9
  };
    }
}).addTo(map);

var polys = omnivore.geojson('polys.geojson', null, polyLayer);


var ptsLayer = L.geoJson(null, {
 onEachFeature: labelEachFeature, 
 pointToLayer: function (feature, latlng) {
  return L.circleMarker(latlng, style(feature))
 ;}
});

var pts = omnivore.geojson('pts.geojson', null, ptsLayer);

polyLayer.on('mouseover', function(e) {
 var matchingPoints = turf.featurecollection([])
 matchingPoints.features = pts.features.filter(function(pt) {
   if(pt.properties.servesbldg === e.layer.feature.properties.bldg_no) return true
 })

 ptsLayer.setGeoJSON(matchingPoints);
});


function getPoints(building, pts) {
  var matchingPoints = turf.featurecollection([])
  matchingPoints.features = pts.features.filter(function(pt) {
 if(pt.properties.servesbldg === building.properties.bldg_no) return true
  })
  return matchingPoints
}   

Here's a GIST of what I've got 包括 GeoJSON 文件。

与其使用 omnivore 抓取 pts 层...为什么不声明一个 pts 变量,使用 jQuery.getJSON 抓取 pts.geojson 并将该响应分配给 pts 变量,然后调用 L.geoJson(pts).addTo(地图)。然后你添加了图层,并且你有原始的 geojson 结构可用于其他地方,如果你需要的话。