Javascript setFeatureState是否未更新映射框中的值?

Javascript setFeatureState是否未更新映射框中的值?,javascript,vue.js,mapbox,Javascript,Vue.js,Mapbox,我试图在mapbox中单击圆时更新圆的笔划。我遵循了mapbox的文档,但它似乎没有更新值。控制台也很清楚 t.map.addLayer({ id: id, type: 'circle', source: id, paint: { 'circle-radius': 100, 'circle-opacity': 0.5, 'circle-color': 'rgba(20, 106, 181, 0.11)', 'ci

我试图在mapbox中单击圆时更新圆的笔划。我遵循了mapbox的文档,但它似乎没有更新值。控制台也很清楚

  t.map.addLayer({
    id: id,
    type: 'circle',
    source: id,
    paint: {
      'circle-radius': 100,
      'circle-opacity': 0.5,
      'circle-color': 'rgba(20, 106, 181, 0.11)',
      'circle-stroke-color': [
        'case', ['boolean', ['feature-state', 'clicked'], false],
          'rgba(20, 106, 181, 0.11)',
          '#146ab5',
      ],
      'circle-stroke-width': [
        'case', ['boolean', ['feature-state', 'clicked'], false],
          2,
          0,
      ],
    },
  });
然后,我正在尝试更新状态:

  t.map.on('click', id, (e) => {
    t.map.setFeatureState({ source: id, id: id }, { clicked: true });
  });
我已经缓慢地通过了,但是值没有更新。
感谢查看您的示例,您的id引用似乎不正确。对于层中的每个元素,必须存在唯一的ID,这可以轻松地添加到源数据中

t.map.addSource('sourceId', {
    'type': 'dataType',
    'data': yourData,
    'generateId': true // This ensures that all features have unique IDs
});
此外,添加后,您必须在每个setFeatureState更新中找到并引用此唯一id:

t.map.on('click', id, (e) => {
    let uniqueId = e.features[0]['id'];
    t.map.setFeatureState({ source: id, id: uniqueId }, { clicked: true });
  });

我自己现在也在为一个类似的问题苦苦挣扎,希望这个输入能有所帮助(我绝不是MapBox GL JS的专家)。以上示例均采用MapBox文档中的示例。

啊,你绝对是超级巨星!我尝试了各种各样的方法,生成ID…使用我已经拥有的ID,非常感谢!