繁体   English   中英

Mapbox GL JS:在缩放级别更改弹出窗口偏移量

[英]Mapbox GL JS: Change popup offset on zoom level

根据我的Mapbox地图的当前缩放级别,标记图标具有不同的大小。 我的所有自定义标记都在div容器中,我更改了类以更改它们的大小。

现在我遇到的问题是,如果图标较小,弹出窗口的偏移量(弹出窗口与标记图标的距离)太大。

是否有可能通过缩放级别更改弹出窗口的偏移量?

有时解决方案比预期更容易.Masebox弹出窗口已经有一个类,取决于弹出位置到标记(例如右下角)。 与我使用的缩放类一起,我可以使用CSS轻松更改偏移值。 这是一个例子。

.zoom-4 > .mapboxgl-popup.mapboxgl-popup-anchor-bottom,
.zoom-4 > .mapboxgl-popup.mapboxgl-popup-anchor-bottom-left,
.zoom-4 > .mapboxgl-popup.mapboxgl-popup-anchor-bottom-right
{
    top: 10px;
}
.zoom-4 > .mapboxgl-popup.mapboxgl-popup-anchor-left {
    top: 6px;
    left: -4px;
}
.zoom-4 > .mapboxgl-popup.mapboxgl-popup-anchor-right {
    top: 6px;
    left: 2px;
}

在我的情况下,根据缩放级别没有应用css类。 我所做的是在缩放级别强制从侦听器中自定义类。 就像是:

 this.map.on('zoom', () => { if (this.map.getZoom() > 8) { // zooming in, remove offset to position var popups: any = document.getElementsByClassName("mapboxgl-popup"); for (let popup of popups) { if (popup.classList.contains("my-offset-class")) { popup.classList.remove("my-offset-class"); } } } else { // zooming out, add left offset to position var popups: any = document.getElementsByClassName("mapboxgl-popup"); for (let popup of popups) { if (!popup.classList.contains("my-offset-class")) { popup.classList.add("my-offset-class"); } } } }); 

这里mapboxgl-popup是弹出窗口的标准css类(您可能希望使用任何自定义类,只要在弹出窗口中应用它),而my-offset-class是应用偏移量的css类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM