Mapbox-GL を使用してマッピング Web アプリケーションを構築しています。クールな機能がたくさんあります。Mapbox Web サイトの例に従って、ベース マップ (衛星、地形など) を切り替えるボタンを設定しました。
私が抱えている問題は、スタイルを変更すると、レイヤーとして読み込まれたポリゴンが削除され、マップが再読み込みされることです。ユーザー クエリに基づいて、Mongo データベースからポリゴンをレイヤーとして読み込みます。ベースマップを変更して、それらのレイヤーを保持できるようにしたいです。
マップをリロードせずに、または少なくともレイヤーをドロップせずにスタイルを変更する方法はありますか?
これはスイッチャーのコードです。例と同じですが、カスタム スタイルの条件を追加しました。
var layerList = document.getElementById('menu');
var inputs = layerList.getElementsByTagName('input');
function switchLayer(layer) {
var layerId = layer.target.id;
if (layerId === 'outdoors') {
map.setStyle('/outdoors-v8.json');
} else {
map.setStyle('mapbox://styles/mapbox/' + layerId + '-v8');
}
}
for (var i = 0; i < inputs.length; i++) {
inputs[i].onclick = switchLayer;
}