【JavaScript】【leaflet】地図タイルが配布されていないズームレベルでも地図を表示する方法

 leaflet は web ページ上に地図を表示するためのライブラリです。この地図を構成する画像はタイル形式の画像として配布されていることが多いです。この地図タイルが提供しているズームレベルが作りたい地図が必要とするレベルに満たないことがしばしばあります。この問題は特に詳細な地図を表示したい場合に起きます。この問題を解決する方法を紹介します。

 具体的なコード例とデモが次です。

// 地理院地図
// @see https://maps.gsi.go.jp/development/ichiran.html
L.tileLayer('https://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png', {
    maxZoom: 24, // 地図としてユーザーにズームを許可する限界値に maxZoom を設定
    maxNativeZoom: 18 // 提供されるズームレベルの max に maxNativeZoom を設定
}).addTo(map);

 leaflet の提供する map のオプションである maxZoom と maxNativeZoom の設定によって扱う地図タイルのズームレベルと地図そのもののズームレベルを独立して制御できます。これによって地図タイルが提供されていないズームレベルでも地図を表示できます。

 leafletの提供するズームレベルのオプションとその意味が次です。

オプション デフォルト値 説明
minZoom 数値 0 このレイヤーが表示される最小のズームレベル(これを含む)。
maxZoom 数値 未定義 このレイヤーが表示される最大のズームレベル(これを含む)。
maxNativeZoom 数値 未定義 タイルソースが利用可能な最大のズーム数。これが指定された場合、
maxNativeZoomよりも高いすべてのズームレベルのタイルは
maxNativeZoomレベルからロードされ、自動的に拡大されます。
minNativeZoom 数値 未定義 タイルソースが利用可能な最小のズーム数。これが指定された場合、
minNativeZoomよりも低いすべてのズームレベルのタイルは
minNativeZoomレベルからロードされ、自動的に縮小されます。

Documentation – Leaflet – a JavaScript library for interactive maps#GridLayerより日本語訳して引用

 要するに native なしならば地図そのものズームレベルを、nartive ありならば扱う地図タイルのズームレベルを設定できるということです。これを利用することで次の様に1枚だけの画像を地図として扱うこともできます。

L.tileLayer('assets/zoom_map_icon_demo/wordpress_icon_{z}_{x}_{y}.png', {
  maxZoom: 24,
  minNativeZoom: 0, // nativeZoomを0,0とすることで常に 0_0_0 のタイルが呼ばれるようにする   
  maxNativeZoom: 0, 
}).addTo(map);

 以上のように、LeafletではmaxZoomとmaxNativeZoomの設定を工夫することで、地図タイルが提供されていないような特定のズームレベルでも地図の表示を実現できます。これは地図表示の柔軟性を格段に上げ自由なズームレベル設定の可能性も広げます。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG