在 Mapbox 的视口外过滤特征
Filter Feature's outside the viewport in Mapbox
我有一个包含大约 10 万个特征的巨大 geojson 文件,我想过滤视口之外的特征。我尝试了多种方法:
https://github.com/mapbox/mapbox-gl-js/issues/8350
和
https://gis.stackexchange.com/questions/300292/how-to-load-geojson-features-outside-view-with-mapbox-gl?rq=1
但似乎没有任何效果。
我的代码是:
//Here i have already added empty geojson source
this.instance.addSource('seats_geojson', {
type: 'geojson',
data: {
"type": "FeatureCollection",
"features": []
}
});
//Here i have axios call with await and i am getting all the feature's in console
//console.log(e.data.featuresCollection.features) <--- 100K features
this.instance.once('idle', () => {
//Once i have the reponse ready I am setting source using setData
this.instance.getSource('seats_geojson').setData(e.data.featuresCollection);
//Here i am creating empty layer with above source
this.instance.addLayer({
id: "rowSelectionDup",
type: 'circle',
source: 'seats_geojson',
paint: {
'circle-color': "#4400d9"
},
filter: [
"in", "s", ""
]
});
});
但是在做类似的事情时:
this.instance.querySourceFeatures('seats_geojson', {
sourceLayer: 'rowSelectionDup',
filter: ['in', 's', "1C"] //This section "s" 1C is in viewport and i am getting 207 feature's
});
this.instance.querySourceFeatures('seats_geojson', {
sourceLayer: 'rowSelectionDup',
filter: ['in', 's', "7C"]. //This section is outside viewport and result is []
});
注:this.instance是mapbox-gl
的地图实例(new Map(config....))
我是不是做错了什么?
或者是否有任何其他方法可以从 geojson 获取特征?
提前谢谢你...
当我在 mapbox-gl 上发布这个问题时 Github:
https://github.com/mapbox/mapbox-gl-js/issues/9720
截至目前的 mapbox-gl 版本,没有直接的方法来获取功能的视口外部。因此,正如@steve-bennett 所回答的那样,我正在获取 geojson url,作为参考保存在 javascript 项目中,并在其上应用过滤器现在对我有用...
希望对您有所帮助...
我有一个包含大约 10 万个特征的巨大 geojson 文件,我想过滤视口之外的特征。我尝试了多种方法:
https://github.com/mapbox/mapbox-gl-js/issues/8350 和 https://gis.stackexchange.com/questions/300292/how-to-load-geojson-features-outside-view-with-mapbox-gl?rq=1
但似乎没有任何效果。 我的代码是:
//Here i have already added empty geojson source
this.instance.addSource('seats_geojson', {
type: 'geojson',
data: {
"type": "FeatureCollection",
"features": []
}
});
//Here i have axios call with await and i am getting all the feature's in console
//console.log(e.data.featuresCollection.features) <--- 100K features
this.instance.once('idle', () => {
//Once i have the reponse ready I am setting source using setData
this.instance.getSource('seats_geojson').setData(e.data.featuresCollection);
//Here i am creating empty layer with above source
this.instance.addLayer({
id: "rowSelectionDup",
type: 'circle',
source: 'seats_geojson',
paint: {
'circle-color': "#4400d9"
},
filter: [
"in", "s", ""
]
});
});
但是在做类似的事情时:
this.instance.querySourceFeatures('seats_geojson', {
sourceLayer: 'rowSelectionDup',
filter: ['in', 's', "1C"] //This section "s" 1C is in viewport and i am getting 207 feature's
});
this.instance.querySourceFeatures('seats_geojson', {
sourceLayer: 'rowSelectionDup',
filter: ['in', 's', "7C"]. //This section is outside viewport and result is []
});
注:this.instance是mapbox-gl
的地图实例(new Map(config....))我是不是做错了什么?
或者是否有任何其他方法可以从 geojson 获取特征?
提前谢谢你...
当我在 mapbox-gl 上发布这个问题时 Github:
https://github.com/mapbox/mapbox-gl-js/issues/9720
截至目前的 mapbox-gl 版本,没有直接的方法来获取功能的视口外部。因此,正如@steve-bennett 所回答的那样,我正在获取 geojson url,作为参考保存在 javascript 项目中,并在其上应用过滤器现在对我有用...
希望对您有所帮助...