あなたの仮定は正しいと思います。MapBox は、API と API キーを使用することを望んでいるようです。
ただし、それにフォールバックできる場合は、ラスター タイルを使用した部分的な解決策があります。または、mapbox サーバーからではなく、OSM データからベクトル mbtile を取得することもできます。
android/ios の mapbox オフライン サポート
2017 年 4 月に mapbox サポートに問い合わせたところ、MapBox スタジオからダウンロードできるスタイル ファイルにはタイルが含まれていませんが、Android/iOS でオフラインでレンダリングする方法があるとのことでした。
Mapbox マップをオフラインで使用する場合は、プラットフォームに応じて、Android または iOS で示されている例に従う必要があります。基本的に、モバイル SDK は、Mapbox Studio で作成されたカスタム スタイルを指すスタイル URL を取り込み、SDK は、マップをオフラインに保つために必要な他のすべてのリソース (フォント、アイコン、タイルセットなど) のダウンロードを処理します。これがどのように機能するかについて詳しくは、オフライン マップに関するガイドをご覧ください。
リンク:
サンプル コードをざっと見てみると、タイルのダウンロードはアプリ内で行われているように見えますが、たとえば、アプリをインストールした直後でネットワーク接続が残っている場合など、事前に行われているように見えます。請求に関する懸念から、Mapbox API キーがこのダウンロードに関係しているかどうかはすぐにはわかりません。オフライン リージョンごとに 6000 のオフライン タイル制限があります。
デスクトップ用ではありません:このサイトでは、オフラインは MapboxGl-JS のオプションではないことにも言及しているため、デスクトップ Web ブラウザーでオフライン リージョンを使用できるようにするには、それをハックする必要があります。
mbtilesとしてmapboxスタジオエクスポート...
mapbox studio classicで、ソースを mbtiles ファイルとしてダウンロードするための設定に、明らかではないオプションがあったと思われます。githubのmapbox classic issueには、ボタンがあるべき場所のスクリーンショットがあります。そのオプションが現在なくなっている可能性があります。
その github プロジェクトhttps://github.com/klokantech/vector-tiles-sampleは、mbtiles ファイルを含まれている pbf ファイルに分割できるプロジェクト/ツールへのリンクを提供します。これは、各ベクトル タイルの protobuf 圧縮形式です ( https ://github.com/mapbox/mbutil )。少し古い。
それ以外の場合は、MapBox から取得した各タイルのネットワーク リクエストを事前にキャッシュしてから、APP プロキシでキャッシュへのリクエストをキャッシュする方法があります。それがToSに反しているかどうかはわかりません。おそらく、キャッシュしたいすべての XYZ 座標をプログラムで実行する必要があります。
ティッペカヌーでダイビングしてベクター タイルを作成する
tippecanoe でベクター タイルを作成できます (そしてそれらを自分でホストします)。それはMapBoxではありません、私は知っています。しかし、それは長期的にはあなたを遠ざけるかもしれません.
それに関する素敵な短いブログ記事: http://fuzzytolerance.info/blog/2017/02/02/Making-your-own-tiles-with-Tippecanoe/
作成した mbtiles をレイヤー化して、オープン ソースのmaputnik (mapbox のスタイル エディターに少し似ています) を使用してスタイルを設定することができます。次に、独自のサーバーで mbtiles を提供し、スタイルをmapboxGL-jsまたは openlayers にプラグインします。
TileMill -- (ラスタ タイルを含む .mbtiles) フォールバック
デスクトップで動作し、シェープファイルからマップを作成できるようにする TileMill がまだ利用可能 (ただし非推奨) です (たとえば、https: //mapzen.com/data/metro-extracts で単一の都市の openstreetmap シェープファイルを取得できます)。 / )。
TileMill は、プロセスの最後に mbtiles ファイルを提供します。ただし、mbtiles にはベクター タイルではなくラスター タイルが含まれています。ベクター タイルは動的にスタイルを設定できるため、モバイルでフォントを使用してさまざまな状況に対応したり、照明を調整したりしたい場合に便利です。
ラスター タイルで十分な場合があります。アプリでは、おそらくそのベース レイヤーの上に他のインタラクティブなオブジェクトをレンダリングできるからです。OpenLayers は、たとえば、これを行うことができる移植可能なフレームワークの 1 つで、マップ データとは別にデータベースから読み込んだオブジェクトを描画したり、関心のあるポイントをクリックしたりできます。
mapbox の代わりに OSM ベースのベクター タイルを取得する
現在、Vector タイルの代替メーカーであるhttp://openmaptiles.org (以前はhttp://osm2vectortiles.org ) があるようです。
https://openmaptiles.org/downloads/#cityなど、ここにアクセスして、選択した都市の mbtiles ファイルをダウンロードし、タイル サーバーを使用してアプリにそのファイルを (ローカルで) 提供できます。(または、上記のツールのいずれかを使用して、個々の pbf ファイルに分割し、ローカル ディスク/メモリからファイルを読み取ります)
このアプローチでは、OSM のベクトル mbtiles を mapbox studio で作成したスタイルと組み合わせます (mapbox studio では、.json スタイルを含む zip ファイルをダウンロードできます)、MapBoxGL を使用して表示することもできます。
mapboxgl スタイル ファイルを編集するために使用できるMaputnik http://maputnik.com/があります (エディターはローカル ストレージで動作します)。おそらくhttps://github.com/boundlessgeo/ol-mapbox-styleがあり、そのスタイルをOpenLayerのスタイルAPIに適したコードに変換できます。