OpenLayersでPMTilesを表示する方法
はじめに
PMTilesとは、タイル化されたデータを単一ファイルに格納したアーカイブ形式です。
PMTilesを地図上に表示する方法を調べると、(MapLibre GL JS)[https://maplibre.org/maplibre-gl-js/docs/]が使われていることが多いです。
(ほとんどそうかも・・・)
そこで、OpenLayersを使っている場合は表示できるのか調べてみました。
結論
ライブラリol-pmtiles
を使う!
pmtiles
そもそも、MapLibre GL JSでの実装で、pmtiles
というライブラリが使われてると思います。
そこで、OpenLayers×pmtilesで調べると、OpenLayersの公式で以下のサンプルがヒットします。
確かに上記コードをそのまま使うと表示はできるのですが、今回扱いたいPMTIlesは中身がベクトルタイル(.pbf形式)なので、このコードのままだと動きません。
ちなみに、MapLibre GL JSを実装例では、基本PMTilesファイルのパスを読み込ませるだけで特別な記述は不要です。
OpenLayaersでは、PMTilesの読み込みに加え、中身のタイルのロード処理を自分で実装しないといけないので、実装難易度は上がります。
(何度か国土地理院最適化ベクトルタイルのロード処理の実装に挑戦しましたが、上手くいかず断念しました...)
ol-pmtiles
OpenLayersでPMTilesを扱うなら、ol-pmtiles
一択でしょう!
pmtiles
では自分で実装しないといけないロード処理を内包してくれていルので、コードが簡潔になります、
PMTilesの中身がラスターデータか、ベクトルデータかでコードが変わりますが、ロード処理を実装しなくていいので、こちらを使うしかないです!
こちらを使うと国土地理院最適化ベクトルタイルもサンプルコードのまま使って表示することができました!
(スタイルは何も設定していないですが、スタイル設定もできることは確認できています。)
最後に
今回の実装コードは以下のリポジトリにあげています。
Discussion