gpt4 book ai didi

mapbox - 如何在 Mapbox GL JS 中通过缩放级别设置 map.loadImage 可见性?

转载 作者:行者123 更新时间:2023-12-02 03:18:22 25 4
gpt4 key购买 nike

我正在使用以下代码加载图像:

map.on('load', function () {

map.loadImage('....png', function(error, image) {
if (error) throw error;
map.addImage('b7', image);
map.addLayer({
"id": "b7",
"type": "symbol",
"source": {
"type": "geojson",
"data": {
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [0, 0]
}
}]
}
},
"layout": {
"icon-image": "b7",
"icon-size": 0.2
}
});
});

如何在特定缩放级别将可见性设置为无?

看起来您无法在 loadImage 上使用 map.setLayoutProperty。在控制台中,它显示:错误: map 样式中不存在图层“b7”,无法设置样式。

为什么我尝试这样的事情:

map.setLayoutProperty( 'b7', 'visibility', 'none' );

有什么想法吗?

最佳答案

关于如何解决此问题的两个建议:

首先,确保您的图像名称和图层名称不同。该函数可能正在寻找 b7 层,但它首先找到名为 b7 的图像(反之亦然)。不管怎样,这都应该改变,因为它会产生冲突的变量。

其次,如果这不起作用,请尝试单独添加源而不是在层内添加源。

 map.addSource("mySource", {
"type": "geojson",
"data": {
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-74.981906, 41.742503]
},
"properties": {
"title": "title ",
"icon": "myImage",
}
}]
}
});

然后添加带有源的图层。

 map.addLayer({
"id": "b7",
"type": "symbol",
"source": "mySource",
"layout": {
"icon-image": "myImage",
"icon-size": 0.2
}
});

您现在可以在 Zoomstart 监听器上调用 setLayoutProperty。如果您只希望使用map.getZoom();在特定缩放级别添加条件,您需要在此处设置图层的可见性,而不是图像。

map.on('zoomstart', 'b7', function(e) {
if (map.getZoom() > 12) {
map.setLayoutProperty('b7', 'visibility', 'none');
}
})

下面是片段,如果您遇到任何问题,请告诉我。

map.on('load', function() {

map.loadImage('myImage.png', function(error, image) {
if (error) throw error;
map.addImage('myImage', image);
map.addSource("mySource", {
"type": "geojson",
"data": {
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [-73.981906, 40.742503]
},
"properties": {
"title": "title ",
"icon": "myImage",
}
}]
}
});

map.addLayer({
"id": "b7",
"type": "symbol",
"source": "mySource",
"layout": {
"icon-image": "myImage",
"icon-size": 0.2
}
});
});
});

map.on('zoomstart', 'b7', function(e) {
if (map.getZoom() > 12) {
map.setLayoutProperty('b7', 'visibility', 'none');
}
})

关于mapbox - 如何在 Mapbox GL JS 中通过缩放级别设置 map.loadImage 可见性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55471364/

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