gpt4 book ai didi

opengl-es - Mapbox Web GL JS - 带有矢量平铺源的 querySourceFeatures() 函数

转载 作者:行者123 更新时间:2023-12-03 14:28:04 25 4
gpt4 key购买 nike

我在 Mapbox 上有一个矢量瓦片集,它是通过上传包含代表澳大利亚维多利亚州特定郊区的多边形的 geojson 文件创建的。我的矢量瓦片集具有三个属性 - 郊区、州、邮政编码 - 对应于 geojson 中的特征属性。

我还可以通过 Mapbox web gl js 库成功查询这些属性以获取准确的 map 。例如,当我单击突出显示的多边形时,我有一个显示弹出窗口的 map ,并且弹出窗口正确显示了该郊区的属性(郊区、州、邮政编码)。

现在我想在我的网页中访问这些属性 - 对于我的图 block 集中的每个功能。我基本上想将这些属性作为列表转储到 map 外的 div 中;只是列出每个郊区及其属性。为此,我尝试使用 MapBox Web GL JS 库的 querySourceFeatures 函数。我有点挣扎。

这是我的代码。我的 map 按预期显示。但是在 JS 控制台中,我只是得到一个空数组。

这是我的代码

var map = new mapboxgl.Map({
container: 'map', // container id
style: 'mapbox://styles/mapbox/streets-v8', //stylesheet location
center: [144.96, -37.81], // starting position
zoom: 8, // starting zoom,
hash:true
});

// Add zoom and rotation controls to the map.
map.addControl(new mapboxgl.Navigation());

map.on('load', function () {
map.addSource('charlieSource', {
type: 'vector',
url: 'mapbox://charlie.962dstid'
});


map.addLayer({
"id": "charlielayer",
"type": "fill",
"source": "charlieSource",
"source-layer": "my-source-layer-name",
"layout": {},
"paint": {
"fill-color": "#00525a",
"fill-opacity": 0.5
}

});

var myFeatures = map.querySourceFeatures('charlieSource',
{
sourceLayer: 'my-source-layer-name',
// i'm confident there is data matching this filter
filter: ["==", "postcode", "3000"]
}
);

console.log(myFeatures);


});

doco 有点轻,所以我不知道我是否正确使用了 querySourceFeatures 函数。我是一个完全的 JS 菜鸟,如果它完全简单的话,我很抱歉。

在我的 Firefox 控制台中,我只得到一个长度为零的数组。不知道从这里去哪里。

我正在使用 mapbox web gl js 库的 v0.18.0。

最佳答案

编辑:添加源后,您必须等待图 block 加载后才能调用 queryRenderedFeatures .此代码应该可以解决您的问题:

var wasLoaded = false;
map.on('render', function() {
if (!map.loaded() || wasLoaded) return;
var myFeatures = map.querySourceFeatures('charlieSource', {
sourceLayer: 'my-source-layer-name',
filter: ["==", "postcode", "3000"]
});
console.log(myFeatures);
wasLoaded = true;
});

查理,你发布的所有内容看起来都是正确的。如果没有使用您的数据的功能演示,我无法查明问题。

您是否尝试过从 ["==", "postcode", "3000"] 更改您的过滤器?至 ["==", "postcode", 3000] ? (将 3000 变成数字而不是字符串)

您确定要搜索的数据在视口(viewport)内吗? querySourceFeatures仅适用于视口(viewport)内的数据。

您确定 source 的值吗?和 sourceLayer是正确的?

关于opengl-es - Mapbox Web GL JS - 带有矢量平铺源的 querySourceFeatures() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37251071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com