Mapbox 在层之间共享相同的源

Mapbox 在层之间共享相同的源,mapbox,mapbox-gl,mapbox-gl-js,Mapbox,Mapbox Gl,Mapbox Gl Js,我想在特定缩放(圆到符号)时更改图层的样式。当我跨越zoom 5时,我想我能做的是删除我的上一层,然后用旧的源创建一个新的层。实际上,它给了我一个错误 如果我用相同的数据创建了一个新的源,那么一切都正常,错误在于源。我不明白的是,源代码仍然存在,因为我可以与它交互 请找到我的,打开控制台查看: 缩放(等待缩放5) 源包含的数据 错误 glMap.addSource('yacht', { type: 'geojson', data: data, buffer: 256 }

我想在特定缩放(圆到符号)时更改图层的样式。当我跨越zoom 5时,我想我能做的是删除我的上一层,然后用旧的源创建一个新的层。实际上,它给了我一个错误

如果我用相同的数据创建了一个新的源,那么一切都正常,错误在于源。我不明白的是,源代码仍然存在,因为我可以与它交互

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

  • 缩放(等待缩放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();
    

给新层一个新id,它就会工作。目前,它们都有“yachtL”的id。

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

你说得对。。。我不明白为什么我会删除上一个id为'yachtL'的图层。你能解释一下吗?问题是我不想失去与我的层的交互(即:我的函数调用yachtL,无论它是什么缩放,我不想为我的每个层复制我的函数)。在我的应用程序中,对于这个问题,如果我删除源代码,然后重新创建相同的代码(使用相同的id),我可以使用yachtL作为图层id。我想我将保留该解决方法,而不是更改图层的id。我是mapbox gl的新手,因此不确定我是否真正理解所有功能。事实上,我很难想出如何改变图层中单个功能的样式,但无论如何,我很高兴这有帮助。你说得对。。。我不明白为什么我会删除上一个id为'yachtL'的图层。你能解释一下吗?问题是我不想失去与我的层的交互(即:我的函数调用yachtL,无论它是什么缩放,我不想为我的每个层复制我的函数)。在我的应用程序中,对于这个问题,如果我删除源代码,然后重新创建相同的代码(使用相同的id),我可以使用yachtL作为图层id。我想我将保留该解决方法,而不是更改图层的id。我是mapbox gl的新手,因此不确定我是否真正理解所有功能。事实上,我很难弄清楚如何改变图层中单个功能的样式,但无论如何,我很高兴这有帮助。