Как всегда показывать всплывающее окно в центре представления? Mapbox

#html #mapbox #mapbox-gl-js

#HTML #mapbox #mapbox-gl-js

Вопрос:

Я хотел бы иметь всплывающее окно, которое всегда появляется в центре представления.Если бы я немного переместил карту вправо, скажем, Boxhill, а затем нажал на кнопку, всплывающее окно было бы трудно увидеть. Как я должен это решить?

https://jsfiddle.net/dendi_lee1996/j985mpvz/20/

HTML

 <div id="map"></div>
<nav id="button"></nav>
  

CSS

 body {
  margin: 0;
  padding: 0;
}

#map {
  position: absolute;
  top: 0;
  bottom: 0;
  width: 100%;
}

#button {
  background: #fff;
  position: absolute;
  z-index: 1;
  top: 10px;
  right: 10px;
  border-radius: 3px;
  width: 120px;
  border: 1px solid rgba(0, 0, 0, 0.4);
  font-family: 'Arial', sans-serif;
}

#button tab {
  font-size: 13px;
  color: #404040;
  display: block;
  margin: 0;
  padding: 0;
  padding: 10px;
  text-decoration: none;
  border-bottom: 1px solid rgba(0, 0, 0, 0.25);
  text-align: center;
}

#button tab:last-child {
  border: none;
}

#button tab:hover {
  background-color: #f8f8f8;
  color: #404040;
}

#button tab.active {
  background-color: #3887be;
  color: #ffffff;
}

#button tab.active:hover {
  background: #3074a4;
}
  

Заранее спасибо.

Дэнни

Ответ №1:

Вы можете динамически устанавливать местоположение всплывающего окна (см. https://docs.mapbox.com/mapbox-gl-js/api/markers/#popup#setlnglat ). Что-то вроде этого:

 if (!popup.isOpen()) {
    this.className = '';
    popup.setLngLat(map.getCenter());
    popup.addTo(map)
} else {
    this.className = 'active';
    popup.remove();
}