【问题标题】:Share the same source between layers在层之间共享相同的源
【发布时间】:2016-10-12 00:33:34
【问题描述】:

我想在某个缩放时更改我的图层样式(圆圈到符号)。当我越过缩放 5 时,我认为我可以做的是删除我以前的图层,然后使用旧源创建一个新图层。实际上,它给了我一个错误。

如果我使用相同的数据创建一个新源,一切正常,则错误与源有关。我不明白的是,源仍然存在,因为我可以与之交互。

请找到我的fiddle,打开控制台查看:

  • 缩放(等待缩放 5)
  • 源包含的数据
  • 错误

    glMap.addSource('yacht', {
        type: 'geojson',
        data: data,
        buffer: 256
    });
    glMap.addLayer({
        "id": "yachtL",
        "type": "circle",
        "interactive": true,
        //'style': '/bright-v8.json',
        "source": "yacht",
        'layout': {},
        'paint': {
            'circle-color': '#262626',
            'circle-opacity': 0.8
        }
    }/*, "cargoL"*/);
    
        removeSpinner();
    

【问题讨论】:

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


    【解决方案1】:

    给新层一个新的id,然后它就可以工作了。目前他们都有 'yachtL' 的 id。

    【讨论】:

    • 嗯,你是对的......我不明白为什么我删除了具有相同 id 'yachtL' 的上一层。你能解释一下吗?问题是我不想失去与我的图层的交互(即:我的函数调用了游艇 L,无论它是什么缩放,我都不想为我拥有的每一层复制我的函数)。在我的应用程序中,对于该问题,如果我删除源然后重新创建相同的(具有相同的 id),我可以使用游艇 L 作为层 id。我想我会保留该解决方法,而不是更改图层的 id
    • 我是 mapbox gl 的新手,所以不确定我是否真正了解所有功能。实际上,我很难弄清楚如何更改图层中单个功能的样式,但无论如何我很高兴这有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 2023-03-27
    相关资源
    最近更新 更多