2016-04-08 27 views
0

我想返回一個圖層的填充顏色,以便它可以用作變量來在正在構建爲單獨文檔的可打印地圖上填充動態圖例。指定返回的getPaintProperty方法Mapbox gl

瀏覽器將只接收十六進制顏色,但getPaintProperty返回hsl。我知道Mapbox根據樣式/圖層保存這些信息,但我無法弄清楚如何訪問它。

有沒有辦法返回十六進制層填充顏色的值而不是?

這是通用代碼我用來訪問每個圖層填充顏色;

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