指定返回的 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"
我想要 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"