Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.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
Javascript 指定返回的getPaintProperty方法Mapbox gl_Javascript_Mapbox Gl - Fatal编程技术网

Javascript 指定返回的getPaintProperty方法Mapbox gl

Javascript 指定返回的getPaintProperty方法Mapbox gl,javascript,mapbox-gl,Javascript,Mapbox Gl,我想返回一个图层的填充颜色,这样它就可以作为一个变量在一个可打印的地图上填充一个动态图例,这个地图是作为一个单独的文档构建的 浏览器将只拾取十六进制颜色,但返回hsl。我知道Mapbox根据样式/图层保存此信息,但我不知道如何访问它 是否有方法返回图层填充颜色的十六进制值 这是我用来访问每个图层填充颜色的通用代码 map.on("render", function() { if(map.loaded()) { console.log(map.getPaintPropert

我想返回一个图层的填充颜色,这样它就可以作为一个变量在一个可打印的地图上填充一个动态图例,这个地图是作为一个单独的文档构建的

浏览器将只拾取十六进制颜色,但返回hsl。我知道Mapbox根据样式/图层保存此信息,但我不知道如何访问它

是否有方法返回图层填充颜色的十六进制值

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

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

我当前的替代方法是使用来执行转换

您只需使用通用的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'))


返回“#e6ebcc”

我希望有一种方法可以从MapBox直接提取十六进制,而不是hsl(它肯定是根据样式存储的),但它目前似乎没有通过API公开。作为替代,这对我来说是一个合适的选择。干杯