访问TileSet的嵌套属性

时间:2019-06-14 22:00:17

标签: mapbox-gl-js

我正在尝试访问MapBoxStudio生成的特定tileet的所有功能。

阅读API文档,我想我应该能够从该方法中获取所有嵌套参数: map.querySourceFeatures(IdOfMyLayer);

但是,此输出为空。

map.querySourceFeatures('words');

“ words”是我从map.getStyle().layers获得的图层的ID

我希望可以访问此特定层的属性。 但是,我得到的结果是空的。

很抱歉出现noob问题,但是我在这里缺少MapBox工作方式中的关键内容,非常感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

如果您尝试访问在Studio中创建的图块集的所有功能,则应该考虑使用其他工作流程。根据定义,磁贴集是为显示地图(而非查询)而优化的数据集的转换。

如果使用Mapbox 数据集而不是 tileset ,则可以将整个数据集作为干净的GeoJSON对象进行访问-假设它足够小,可以加载到浏览器中。另外,您可以通过其他方式创建GeoJSON,然后将其上传。

如果querySourceFeature()返回[],则很可能尚未在当前视口中加载要素。也许您需要在加载源数据之后的稍后时间触发调用。

答案 1 :(得分:0)

我明白了。 检索数据集所有特征的正确方法是使用DataSet API:

https://docs.mapbox.com/api/maps/#retrieve-a-dataset

这就是我所做的:

$.ajax({
            url: 'https://api.mapbox.com/datasets/v1/*****/{dataset_id}/features?limit=50&access_token=********',
            type:'GET',
            success:function(data){console.log(data)},
            error:function(error){console.log('ERROR')}
        })

{mapset_id}来自mapboxStudio。

我可以限制并存储变量以处理JSON响应。 非常感谢:)