Mapbox GL-防止基于缩放的图层标签褪色

时间:2020-10-06 19:51:45

标签: mapbox mapbox-gl-js mapbox-gl mapbox-marker

将Mapbox GL JS 1.12.0与GeoJSON一起使用,我要添加具有基于GeoJSON中“名称”值的数字标签的圆。

map.addLayer({
    'id': 'marker',
    'type': 'circle',
    'source': 'geojson',
    'minzoom': 0,
    'maxzoom': 24,
    'paint': {
        'circle-radius': 10,
        'circle-color': '#FFFFFF',
        'circle-stroke-color': '#000000',
        'circle-stroke-width': 2,
        'circle-opacity': 1,
    },
    'filter': ['==', '$type', 'Point']
});

map.addLayer({
    'id': 'marker-label',
    'type': 'symbol',
    'source': 'geojson',
    'minzoom': 0,
    'maxzoom': 24,
    'layout': {
        'text-field': [ 'format', ['get', 'name'], { 'font-scale': 0.8, 'text-translate': [0,-20] } ],
    },
    'filter': ['==', '$type', 'Point']
});

放大后,它们看起来正确:

enter image description here

缩小时,圆圈开始重叠,但看起来仍然正确:

enter image description here

但是随后,“ 2”逐渐淡出,并且“ 1”在#2的圆圈中显示(即使圆圈具有白色填充并且不透明度为1),并不清楚是哪个#1和哪个# 2。

enter image description here

有更好的方法吗?我希望您可以在圆本身上添加居中标签。

我可以禁用这种自动褪色/透明度吗?

我可以以某种方式将标签绑定到该特定圈子吗?

1 个答案:

答案 0 :(得分:0)

我可以禁用这种自动褪色/透明度吗?

您可以使用"text-allow-overlap": true禁用它。您可能不喜欢结果。

我可以以某种方式将标签绑定到该特定圈子吗?

否。