Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mapbox 更改任何多边形';它的颜色是单层的_Mapbox_Mapbox Gl Js - Fatal编程技术网

Mapbox 更改任何多边形';它的颜色是单层的

Mapbox 更改任何多边形';它的颜色是单层的,mapbox,mapbox-gl-js,Mapbox,Mapbox Gl Js,我使用mapbox gl js渲染彩色(即填充)多边形,其源是geojson要素集合。我想在客户端根据用户操作动态更改多边形颜色。以下约束适用/已尝试过: 我使用的是Mapbox GL JS-不是传单等 我希望将所有多边形添加到单个图层(即每个mapbox图层的要素集合),因为为每个多边形添加新图层似乎会对性能产生灾难性影响(我有数千个多边形,每个多边形有数千个坐标),并且 应该可以通过它们的ID来识别单个多边形;这也是我努力的地方:我不知道如何在以特征集合的形式将所有多边形添加到图层后识别它们

我使用mapbox gl js渲染彩色(即填充)多边形,其源是geojson要素集合。我想在客户端根据用户操作动态更改多边形颜色。以下约束适用/已尝试过:

  • 我使用的是Mapbox GL JS-不是传单等
  • 我希望将所有多边形添加到单个图层(即每个mapbox图层的要素集合),因为为每个多边形添加新图层似乎会对性能产生灾难性影响(我有数千个多边形,每个多边形有数千个坐标),并且
  • 应该可以通过它们的ID来识别单个多边形;这也是我努力的地方:我不知道如何在以特征集合的形式将所有多边形添加到图层后识别它们。如果不能做到这一点-如果不能通过ID识别,如何识别它们
  • 请提供一个工作示例,显示至少两个多边形被添加到一个图层中,并且它们的颜色在添加后发生变化(随机颜色很好,我对原理感兴趣)

    不幸的是,这些问题太多了,不是我所需要的。非常接近,但没有显示如何实际应用更改。它只是提到setStyle():-(


    感谢您的帮助!

    您想使用数据驱动样式,该样式允许您使用单个图层,但根据该图层中每个功能的属性使用不同的样式。请参见位于的示例,听起来您想制作一个“choropleth”-由某些数据属性进行颜色编码的多边形

    我不知道在以要素集合的形式将所有多边形添加到图层后如何识别它们

    确保每个多边形都有一个id属性。在GeoJSON中,这类似于:

    "properties": {
        "id": 451,
        "myvalue": 0.8
    }
    
    基本上有两种方法可以进行着色:

  • 单独存储数据,并生成一个大数据驱动的属性,将id映射到其所需的颜色
  • 将数据存储在要素上,并使用小型数据驱动特性将数据转换为颜色

  • 与其要求提供一个工作过的示例,我建议您使用API文档尽可能接近,并在遇到问题时提出一个特定的问题。

    Steve,谢谢您的回答!事实证明,我还没有完全理解mapbox是如何处理其颜色和数据样式的。基本上,在我理解它取决于多边形之后的属性以及“填充颜色”、“type=interval”和“stops”指令,一切都安排妥当了。