iOSアプリケーション用のオフラインマップの作成





親愛なるハブロフチアン!



この記事では、オフラインマップを実装する方法について説明します。



免責事項 この記事は何のPRでもありません。 私はこの実装オプションを最も最適なものとして選択しましたが、アクセスしやすい形でそれを伝えたいと思います。

よろしくお願いします!



背景



香港向けのガイドアプリケーションを開発する際、オフラインマップを使用する必要がありました。 残念ながら、Googleマップはそのような機会を提供しないため、絶望のため、MapBoxなどのサービス、またはiOSの拡張機能であるMapBox-ios-sdkを使用する必要がありました。



猫の下で興味を持ってください。



必要なソフトウェアをインストールする



必要なもの:



Postgres.appをダウンロードして構成する


オフからアプリケーションをダウンロードします siteを展開し、アプリケーションフォルダーに移動します。

次に、それを実行します。



アプリケーションは、このようなウィンドウで私たちを歓迎します。

「psqlを開く」をクリックします。







または、ステータスバーから開きます。







これらの手順の後、PostgreSQLが実行されているコンソールが開きます。 次に、タイルを保存するためのベースを作成する必要があります。

コンソールで、次を入力します。



create database osm: \connect osm create extension postgis; \quit
      
      







OSM Brightをダウンロード


このリンクからOSM Brightパッケージをダウンロードしてください。



フォルダーを解凍して開き、configure.py.sampleファイルの名前をconfigure.pyに変更し、このファイルをテキストエディターで開き、フィールドを変更します(必要な場合)。



それでも、将来プロジェクトに混乱が生じないように、これを行うことをお勧めします。



それで、名前を変えて、私は香港を示しました。



デフォルトのディレクトリを残しました。 このディレクトリはTileMillアプリケーションによって使用されます。後でTileMillに煩わされないように、変更しないことをお勧めします。







ユーザー名とパスワード、および他のすべてのフィールドは空白のままです。



次に、マップのスタイルファイルをダウンロードする必要があります。

彼らはここにいます:







ロード後、それらをOSM Brightフォルダーにミックスします。

ファイルを解凍する必要はありません。OSMBrightはそれ自体を行います。



osm2pgsqlをダウンロードしてインストールする


リンクをダウンロードし、イメージをエミュレートして、osm2pgsqlをインストールします。







TileMill.appをダウンロードする


サイトにアクセスしてダウンロードし、続いてアプリケーションをアプリケーションディレクトリに転送します。



地図の読み込み



オフラインマップを作成する前に、そのサイズを決定する必要があります。 アプリケーションの重量が1〜2 GBを超えるため、カードは大きすぎてはいけません。



iPhone 16gbを使用するユーザーは非常に失望します。



以下にリストされているサービスのいずれかに渡します。

metro.teczno.comからマップをダウンロードしました。





市を見つけて、拡張子が.osm.pbfのファイルをダウンロードします。







変換



osm2pgsql


「ターミナル」を開いて書き込みます。



 osm2pgsql -cGs -d osm -S /usr/local/share/osm2pgsql/default.style ~/Downloads/<your_map>.osm.pbf
      
      







OpenStreetMap wiki wiki.openstreetmap.org/wiki/Osm2pgsqlでパラメーターの説明を表示するか、ターミナルでコマンドを記述できます



 osm2pgsql --help
      
      







osm2pgsqlパッケージがカードを処理し、それをPostgresデータベースに転送するまで待機します。

通常、ファイルサイズに応じて5〜20分です。



最後に、このような「Osm2pgsqlは全体で71秒かかった」という碑文が表示されます。







OSMブライト


次に、TileMillアプリケーション用のプロジェクトを作成する必要があります。

c OSM Brightフォルダーに移動します。



 cd ~/Downloads/mapbox-osm-bright
      
      







そして、スクリプトを実行します。



 ./make.py
      
      







オフラインマップの作成



TileMill.appアプリケーションを開きます。



注意! 考えられるバグ。 TileMillの起動中にPostgresアプリケーションが開いている場合、TileMillアプリケーションは開かず、常にロード状態にあるという事実にあります。 (コンピューターを再起動することで処理されます)。







すべてが正しく行われた場合、プロジェクトはTileMillアプリケーションに表示されます。



閉じている場合はPostgresを起動し、プロジェクトを開きます。







[エクスポート]をクリックして、MBTiles形式を選択します。







ズームを設定します。たとえば、10〜14を設定し、最小ズームの中心点をすぐにマークします。

あなたが何か間違ったことをすると、アプリケーションはそれについてあなたに知らせます。

選択して、目的の領域を選択します。

そして「エクスポート」をクリックします。



マップの変換と圧縮には、10分から1年、1年という非常に長い時間がかかります。

それはすべて、Macのパワーと圧縮するカードの領域に依存します。 実際のプロジェクトで推奨されるカードのズーム(11〜16)、MacBook Pro 13、2012年半ばの圧縮には30〜40分かかります。



処理後、プログラムはファイルの保存を提案します。







セーブ!



アプリケーションでのカードの統合



Cocoa-Podsを使用してMapBox-ios-sdkを接続します。SDKはここにあります 。 更新バージョンは既にこのバージョンに接続されているため、「開発」ブランチの使用をお勧めします

iOS 7スタイルを含むSMCalloutView 2.0。

ポッドファイル
プラットフォーム:ios、「7.0」



ポッド 'Mapbox' ,: git => 'https://github.com/mapbox/mapbox-ios-sdk.git' ,: branch => 'develop'





TileMillで作成されたマップをプロジェクトリソースに転送します。



そして、マップをメインビューに追加します。



ViewController.m
 @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; RMMBTilesSource *offlineSource = [[RMMBTilesSource alloc] initWithTileSetResource:@"HongKong" ofType:@"mbtiles"]; RMMapView *mapView = [[RMMapView alloc] initWithFrame:[self view].bounds andTilesource:offlineSource]; [mapView setZoom:11]; [mapView setMinZoom:11]; [mapView setMaxZoom:14]; [mapView setCenterCoordinate:CLLocationCoordinate2DMake(22.327330,114.123419)]; //  MapBox     . =) [mapView setShowLogoBug:NO]; [mapView setHideAttribution:YES]; [mapView setAutoresizingMask:(UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth)]; // Retina Display [mapView setAdjustTilesForRetinaDisplay:YES]; [self.view addSubview:mapView]; } @end
      
      









サンプル付きプロジェクト-github.com/Ne0nX/OfflineMaps-Example



プロセスで使用したリソース



www.mapbox.com/tilemill/docs/guides/osm-bright-mac-quickstart

github.com/mapbox/mapbox-ios-example



最後まで読んでいただきありがとうございます。

頑張って!



All Articles