0

別のドキュメントとして構築されている印刷可能なマップに動的な凡例を設定するための変数として使用できるように、レイヤーの塗りつぶし色を返したいと考えています。

ブラウザーは 16 進数の色しか認識しませんが、getPaintProperty は hsl を返します。Mapbox がこの情報をスタイル/レイヤーに対して保持していることは知っていますが、アクセス方法がわかりません。

代わりにレイヤーの塗りつぶし色の 16 進値返す方法はありますか?

これは、各レイヤーの塗りつぶしの色にアクセスするために使用している汎用コードです。

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

私の現在の代替手段は、追加のライブラリを使用して変換を実行することです。

4

1 に答える 1

0

一般的な rgba to hex 関数を使用できます。

 //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"

于 2016-04-12T15:34:54.277 に答える