指定返回的 getPaintProperty 方法 Mapbox gl

specify returned getPaintProperty method Mapbox gl

我想要 return 图层的填充颜色,以便它可以用作变量来填充可打印地图上的动态图例,该地图正在作为单独的文档构建。

浏览器只会选择十六进制颜色,但 getPaintProperty returns hsl。我知道 Mapbox 持有这些信息 style/layers 我只是不知道如何访问它。

有没有办法用 return hex 层填充颜色的值代替?

这是我用来访问每一层填充颜色的通用代码;

    map.on("render", function() {
    if(map.loaded()) {
    console.log(map.getPaintProperty('layer id','fill-color'));
    }
    });

我目前的替代方法是使用 additional library 来执行转换。

您可以只使用通用的 rgba 到十六进制函数:

 //Function to convert hex format to a rgb color
function rgb2hex(rgb){
     rgb = rgb.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
     return (rgb && rgb.length === 4) ? "#" +
         ("0" + parseInt(rgb[1],10).toString(16)).slice(-2) +
         ("0" + parseInt(rgb[2],10).toString(16)).slice(-2) +
         ("0" + parseInt(rgb[3],10).toString(16)).slice(-2) : '';
 }

rgb2hex(map.getPaintProperty('park', 'fill-color'));

returns "#e6ebcc"