11

Android アプリケーションで Mapbox GL を使用したいと考えています。このサービスはまもなくリリースされる予定ですが、レンダラーの使用についてトリッキーな質問があります。

レンダラー自体は気に入っていますが、アプリケーションで独自のマップ データを使用したいと思っています (Mapbox が提供する有料のデータではありません)。たとえば、自分で OpenStreetMaps データを解析し、それを何らかの方法でカスタマイズしてから、レンダラーの中に入れてアプリケーションで表示したいと考えています。

質問: Mapbox GL を使用しているときに、自分のマップ データを使用することは可能ですか? それとも、Mapbox データでのみ使用できますか?

よろしくお願いします。おそらく、この問題に対する他のよくできた解決策を知っていますか? 問題は、ラスタータイルではなくベクタータイルが欲しいということです。そして、このプロジェクトは後に iOS 向けに開発される予定です。

4

3 に答える 3

3

独自のタイルを使用できます。私は2つのことを試しました。独自のMapzen ベクター タイルの生成(Mapbox と同じ形式を使用) また、無料で使用することもできます。ここにそれらのレイヤーの説明があります. これは非常に手間のかかる作業です。postgresql が必要で、OSM PBF エクスポート全体をデータベースにロードしてから、このデータベースからデータを要求してベクター タイルをレンダリングする python サーバーを実行します。表示されているタイルをレンダリングするのにページごとに数秒かかったので、キュー内のすべてのタイルをレンダリングすることを意図していると思います。DB サーバーがクエリされた後、ほとんどの時間は Python で費やされました。素敵なタイルが戻ってくるという利点があります。基本的に必要なものはすべて揃っていますが、カスタマイズするのははるかに困難です。たとえば、自転車道に特定のスタイルを追加したい場合などです。コードを深く掘り下げて、いくつかのクエリ テンプレートやその他多くのものを変更する必要があります。

次にTilemakerを試してみました。これは、OSM PBF ダンプと lua 構成スクリプト (タイルに送信するタグを指定する場所) を読み取り、マップボックス タイルを出力する単なる C++ プログラムです。セットアップとカスタマイズがはるかに簡単で、すべてのタイルが一度にレンダリングされるという利点があります。しかし、きれいなタイルを作成するのは難しいです。(別名、すべての異なる高速道路タグをロードすると、異なる種類の道路になります。それを指定するのはあなた次第ですが、これは前述の Mapzen と Mapbox でも既に機能しています)。

たとえば、Mapzen 道路レイヤーの種類mapzen では、これは既に処理されていますが、Tilemaker では、さまざまな OSM タグから道路タイプを取得するすべての条件をレイヤーに書き込むのはユーザー次第です。また、種類が a であるため、landuse タグではさらに複雑になります。

landuse、leasure、natural、highway、aeroway、および amenity の OSM タグの組み合わせ、または Natural Earth エリアの都市部と公園または保護された土地。

もちろん、完全に異なるタグを使用することもできますが、どの土地利用を見ているかを示すタグがあると便利です。

Mapbox、mapzen、カスタム mapbox タイルはすべて同じフォーマットを使用しますが、それぞれに異なるタグがあることを知っておく必要があります。したがって、一方のために作成したスタイルは、おそらく他方では機能しません。

スタイルを作成するには、Mapbox Studio を使用できます (ただし、現在パブリック ベータ版であり、そこで独自のタイルを指定できるかどうかわからないため、おそらく役に立たないでしょう)。

私はMapbox codeflowを使用しました。これは基本的に、スタイル ファイルが変更されたときにマップを使用してサイトをリロードする gulp スクリプトを備えた nodejs サーバーです。また、JSON に加えて toml、JSON5、yml での記述スタイルもサポートしています。また、エラーもうまく表示されます。(行番号のみ欠落) 現在、スタイルのバージョン 7 をサポートしていますが、8 は現在リリースされていません。エラーの行番号を取得するために、スタイルを新しいバージョンに更新できるMapbox GL スタイル仕様を使用しました。Mapbox GL スタイルにコンパイルされる別のスタイル言語であるGlugを試すこともできます。もう少しコンパクトです。

タイルを使用するには、 mb-utilでmbtile を作成して使用することもできます。

于 2015-11-09T13:17:19.920 に答える