以下は私のコードでベースマップを表示し、中心座標とズームレベルを設定してビューポートにガーナを表示し、またNDVIプロパティのガーナマップをスタイル/カラー表示します私のソースレイヤー(マップボックスはタイルセットをホストしました)ghanaNDVILayer。あなたは上記のコードで見た場合レイヤーの中心座標、ズーム、停止を動的に計算します
mapID='myMapID';
mapboxgl.accessToken = 'accessToken';
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v9',
center: [-1.41, 6.32],
zoom: 5
});
map.on('load', function() {
map.addLayer({
'id': 'main',
'type': 'fill',
'layout': {},
'paint': {
'fill-color': {
property: 'NDVI',
stops: [
[0, '#F2F12D'],
[1, '#EED322'],
[2, '#E6B71E'],
[3, '#DA9C20'],
[4, '#CA8323'],
[5, '#B86B25'],
[6, '#A25626'],
[7, '#8B4225'],
[8, '#723122']
]
},
'fill-opacity': 0.8
},
'source': {
'type': 'vector',
'url': 'mapbox://' + mapID
},
"source-layer": "ghanaNDVILayer",
});
});
は今、私はハードセンターは、ズームレベルを調整し、このガーナNDVI動向例えば典型的な配列を停止するコード化されてきました。
このアプローチは、1つのデータソース(この場合はガーナデータソース)のみを扱っていますが、データソースが変更される可能性があり、これらの値をハードコードすることはできません。プロパティはNDVI以外のものでもあります。
私はデータソースとしてマップボックスホスト型のタイルセットを使用していますが、私のサーバー上にもオリジナルのgeoJsonデータソースがあります。
私たちがロードしているソースに応じて、センター、ズーム、および停止を計算する方法はありますか?
私が思った他のアプローチは、サーバにタイルセットソースIDを渡し、元のgeoJSONを探し、それを使ってセンターを計算し、ズームしてサーバーで停止してから、これらの値をクライアントに渡してマップをレンダリングしますjsで。
これらの値を動的に計算する最良の方法は何か教えてください。
うーん、あなたが(スタイルAPIはなく、Mapbox-GL-JS APIを介して)直接スタイルファイルにアクセスする場合
しかし、あなたはこれらのプロパティにアクセスすることができます私は質問を再読したので、私はポイントを逃したと思う - それはソースではなく、スタイルである。おっとっと。 –
これを達成するための最良の方法は何ですか?私は異なる地域の少なくとも100の異なる地図を処理する必要があります、私はどのようにプログラムを停止、中心とズームを計算するのですか? –