2016-04-08 2 views
0

Я хочу вернуть цвет заливки слоя, чтобы он мог использоваться как переменная, чтобы заполнить динамическую легенду на печатной карте, которая строится как отдельный документ.указать возвращаемый метод getPaintProperty Mapbox gl

Браузер получает только шестнадцатеричные цвета, но getPaintProperty возвращает hsl. Я знаю, что Mapbox хранит эту информацию против стиля/слоев, я просто не могу понять, как получить к нему доступ.

Есть ли способ вернуть hex значения цветов заливки вместо?

Это общий код я использую, чтобы получить доступ заполнить цвет каждого слоя;

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

Моя текущая альтернатива использовать additional library для выполнения преобразования.

ответ

0

Вы можете просто использовать общий 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 ('парк', 'заполняющей цвет'));

returns "#e6ebcc"

+0

Я надеялся на способ привлечь вниз шестигранные вместо HSL непосредственно от MapBox (это, безусловно, сохраняет его от стиля), но в настоящее время не кажется, экспонируют через API. Вместо этого это подходящая альтернатива для меня. Приветствия. – benj

Смежные вопросы