0

我正在使用Omnivore 扩展将我的 GeoJSON 文件加载到 Mapbox/Leaflet 地图中。后来,我在这个数据上使用了 Turf.js。

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

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
}   

这是我所拥有的 GIST,包括 GeoJSON 文件。

4

1 回答 1

1

而不是使用omnivore来抓取pts层......为什么不声明一个pts变量,使用jQuery.getJSON来抓取pts.geojson并将该响应分配给pts变量,然后调用L.geoJson(pts).addTo(map) . 然后您添加了图层,并且您可以根据需要在其他地方使用原始的 geojson 结构。

于 2015-04-29T21:57:49.480 回答