我正在使用以下代码加载图像:
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。在控制台中,它说:错误:图层'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');
}
})