Два предложения о том, как решить эту проблему:
Во-первых, убедитесь, что имя вашего изображения и имя слоя различаются.Возможно, функция ищет слой 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
}
});
Теперь вы можете вызывать setLayoutProperty для прослушивателя zoomstart.Добавьте условное обозначение, если вы хотите использовать его только при определенном уровне масштабирования, используя 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');
}
})