如何在Mapbox Gl Js

时间:2019-06-25 21:56:54

标签: javascript mapbox

我想在一个圆圈内添加一个文本,这是我的标记,但是它什么也没显示。

我有两层,一层代表圆圈,一层代表文字。

我正在尝试通过添加文本字段属性使其工作,但nothigs会被渲染。

这是我的两层,我试图添加文本的那一层是第二层,称为单打计数

      map.addLayer({
        id: "singles",
        // type: "symbol",
         type: "circle",
        source: "users",
        filter: ["!has", "point_count"],
        // layout: { 
        //   "icon-image": "custom-marker"
        // },
        paint: {
            'circle-radius': {
                'base': 10,
                'stops': [[5, 20], [15, 500]]
            },
            'circle-color': '#ddffc8',
          }
      });
    });


    map.addLayer({
        id: "singles-count",
        type: "symbol",
        source: "users",
        filter: ["has", "singles_count"],
        layout: {
        "text-field": "XXX",
        "text-font": ["DIN Offc Pro Medium", "Arial Unicode MS Bold"],
        "text-size": 12
        }
      });

但是,它不呈现XXX也不抛出任何错误,有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这里有3种可能出错的地方:

    每个
  • filter: ["has", "singles_count"]的结果为false
    功能,因此没有呈现任何符号。

  • 似乎 就像您有一个很大的圆半径'stops': [[5, 20], [15, 500]]singles层可能会与singles-count层完全重叠,并且实际上正在渲染文本,但该文本之下。要解决此问题,您需要指定beforeId函数的addLayer参数,例如this

map.addLayer({
        id: "singles-count",
        type: "symbol",
        source: "users",
        filter: ["has", "singles_count"],
        layout: {
        "text-field": "XXX",
        "text-font": ["DIN Offc Pro Medium", "Arial Unicode MS Bold"],
        "text-size": 12
}, 'singles');
  • 在您的地图图块托管服务商中找不到["DIN Offc Pro Medium", "Arial Unicode MS Bold"]的字体标志符号。 (“网络”标签中的404错误)

答案 1 :(得分:0)

可以用jsfiddle / codepen做一个测试用例吗?层看起来不错,但是过滤器可能会过滤掉所有数据。