MapBox / Leafletでベースレイヤーをプログラムで切り替える方法


12

複数のベースレイヤーがあり、アプリケーションのさまざまなアクションと状態に応じて、プログラムで切り替える必要があります。私の人生のために、どのように見つけることができません。

回答:


16

このチュートリアルは良い例です。

1)例に示すように、プログラムで切り替えたい関数でアクセスできる変数名を使用してベースレイヤーを設定します。

var grayscale = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution}),
    streets   = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution});

2)次に、追加または削除するレイヤーを追加および削除します。以下は、grayscaleレイヤーをレイヤーに交換しstreetsます。これは、両方grayscalestreets行い、切り替えを行う機能の範囲内で利用可能であることを前提としています。

map.removeLayer(grayscale);
map.addLayer(streets);

3)L.control.layers例に示されているレイヤーコントロールを使用している場合、コントロールはマップ上にあるものを追跡し、それに応じてチェックボックスを変更します。


ここはmapboxUrlmapboxAttribution
Mohammad Dayyan

あなたは上記のリンクのチュートリアルを参照する必要が@MohammadDayyan
タム

0

/programming//a/33762133/4355695から

通常、マップにレイヤーを追加するだけで(例:myTileLayer.addTo(map))、そのレイヤーがベースレイヤーまたはレイヤーコントロールのオーバーレイの一部である場合、後者は自動的にステータスを更新します(ベースレイヤーを追加した場合、ラジオボタンがそれに応じて選択されます;オーバーレイの場合、対応するチェックボックスがチェックされます)。

試してみましたが、うまくいきました。現在のベースレイヤーを削除する必要はありません(または、どちらがアクティブかを把握する必要はありません)。ちょうどmyTileLayer.addTo(map)仕事をします:それがすでに私のベースレイヤーの一部であるならば、マップはそれに「切り替わります」。現在のレイヤーを自動的に削除し、に変更しmyTileLayerます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.