У меня проблемы с закрытием / удалением всплывающих окон, когда слои маркеров закрываются при нажатии. Я пытался использовать popup.remove в функции onclick, но мне не очень повезло связать функцию с кнопками, используемыми для отображения и скрытия слоев маркера. Любая помощь в закрытии всплывающих окон, когда слои маркеров закрыты или скрыты, была бы очень признательна.
JS:
// add popup to layer
map.on('click', function (e) {
var features = map.queryRenderedFeatures(e.point, {
layers: ["high_camp"] // Add layers
});
if (!features.length) {
return;
}
var feature = features[0];
var popup = new mapboxgl.Popup({
offset: {
'top': [0, 0],
'top-left': [0, 0],
'top-right': [0, 0],
'bottom': [0, -40],
'bottom-left': [0, -40],
'bottom-right': [0, -40],
'left': [18, -22],
'right': [-18, -22],
}
})
.setLngLat(feature.geometry.coordinates)
.setHTML(feature.properties.NAME)
// Change attribute, properties.'Replace' (Uppercase)
.addTo(map);
});
// Toggle high camp layer
var togglehighcampId = ["high_camp"]; // Add layer
document.getElementById("highcampIcon").onclick = function (e) {
// Change button name, getElementById('Replace')
for (var index in togglehighcampId) {
var clickedLayer = togglehighcampId[index];
e.preventDefault();
e.stopPropagation();
var visibility = map.getLayoutProperty(clickedLayer, 'visibility');
if (visibility === 'none') {
map.setLayoutProperty(clickedLayer, 'visibility', 'visible');
this.className = '';
} else {
this.className = 'on';
map.setLayoutProperty(clickedLayer, 'visibility', 'none');
}
}
};