У нас всплывающие окна отображаются вне контейнера карты, когда они открываются по краю карты. Однако, если карта перемещена, всплывающие окна будут отображаться с правильной привязкой, чтобы поместиться внутри контейнера карты.
Когда мы проверяем DOM, мы видим, что всплывающие окна не всегда имеют правильный «якорный класс» снизу (см. Скриншоты).
// init Map
let map = new mapboxgl.Map({
container: "map", // container id
// style: "mapbox://styles/mapbox/streets-v11"
style: "mapbox://styles/kevin-fabre/ck8a28d160noh1imv3a9abrlu", // stylesheet location
bounds: [
[bbox[0], bbox[1]],
[bbox[2], bbox[3]]
],
maxBounds: this.bboxToBounds(this.getMaxBbox()),
});
//Popups
let hoverPopup = new mapboxgl.Popup({
offset: 32,
closeButton: false,
closeOnClick: true
});
let clickPopup = new mapboxgl.Popup({
offset: 32,
closeButton: false,
closeOnClick: true
});
// how we add popup to the map
map.on("displayClickPopup", e => {
layerIpPopUp = e.features[0].properties.apiId;
let coordinates = e.features[0].geometry.coordinates.slice();
// Ensure that if the map is zoomed out such that multiple
// copies of the feature are visible, the popup appears
// over the copy being pointed to.
while (Math.abs(e.lngLat.lng - coordinates[0]) > 180) {
coordinates[0] += e.lngLat.lng > coordinates[0] ? 360 : -360;
}
clickPopup
.setHTML('<div id="vue-popup-content"></div>')
.setLngLat(coordinates)
.addTo(map);
const popupInstance = new CarouselPopUpClass({
store,
i18n,
router,
propsData: {
posts: JSON.parse(e.features[0].properties.posts),
currentApiId: e.features[0].properties.apiId
}
});
popupInstance.$mount("#vue-popup-content");
});
Мы также используем vuejs и vuetify внутри всплывающих окон .
Мы сделали что-то, что заставляет якорь всегда "опускаться" при открытии всплывающих окон?
Спасибо