我希望在移动设备上显示时,在地图框标记上弹出一个弹出窗口

时间:2017-03-08 19:56:02

标签: popup mapbox mapbox-gl-js

我正在mapbox上制作一张地图,其中包含从数据集导入的标记。这些标记有一个弹出窗口,可以在桌面上完美运行,但在移动设备上查看时,它会从屏幕边缘流下。下面是我用来创建此弹出窗口的代码。如何在切换到移动设备时根据显示屏幕调整弹出大小?

map.on('click', function(e) {
      var features = map.queryRenderedFeatures(e.point, {
        layers: ['American Eats'] // replace this with the name of the layer
      });
      if (!features.length) {
        return;
      }
      var feature = features[0];
      var popup = new mapboxgl.Popup({ offset: [0, -15] })
        .setLngLat(feature.geometry.coordinates)
        .setHTML('<h3>' + feature.properties.Title + '</h3><h4>' + feature.properties.Adress + '</h4><p>' + feature.properties.Description + '</p>')
        .setLngLat(feature.geometry.coordinates)
        .addTo(map);
    });

1 个答案:

答案 0 :(得分:1)

使用CSS很容易做到这一点。这些方面的东西:

@media only screen and (max-width: 480px) {
    .mapboxgl-popup-content {
        max-width: 250px;
    }
    .mapboxgl-popup-content div {
        padding:0em;
    }
    .mapboxgl-popup-content p {
        margin: 0.5em 0.5em;
    }
}

调整所需的任何设置,以保持弹出窗口较小。我在Hipster Map of Melbourne使用这种方法 - 在一个非常小的浏览器窗口中尝试它,看看弹出窗口如何缩小。