mapbox-gl-js版本:> = 0.27.0< = 0.38.0
(1)我有一个Feature
geojson类型的单个多边形从网址源添加到我的地图。
(2)我还有一个FeatureCollection
geojson类型的~4k多边形也从网址源添加到地图中。
我使用(1)和(2)之间的turf.intersect来选择(2)的交叉多边形。
然后我将相交的多边形[(2)的子集]存储到数组中。
然后我操纵那些交叉多边形的某些属性的值 简单的数学。我现在想用数组的结果值更新(2)。
我希望使用类似setData
的内容来更新(2),但对于也不是(a)geojson数据对象或(b)指定的url的子集而言,这是不可能的在docs。
希望我已经充分解释了这一点。如果是这样,在这种情况下建议的工作流程是什么?
答案 0 :(得分:1)
如果你让它加载GeoJSON,Mapbox不擅长分享;请参阅https://github.com/mapbox/mapbox-gl-js/issues/1762如果您想自己操作数据,则应自行加载,然后将其传递给Mapbox。例如:
// load your data via ajax however you want
const promises = {
polygon: $.get('.../geojson.json'),
collection: $.get('.../feature-collection.json'),
};
// setup your map
const map = new mapboxgl.Map({...});
map.on('load', () => {
RSVP.hash(promises).then((data) => {
map.addSource('my-data', {
type: 'geojson',
// transform does intersection and updates,
// then outputs a GeoJSON formatted object
data: transform(data.polygon, data.collection),
});
});
});