2011-07-05 9 views
3

Route-Meを使用してオフラインMBTilesデータベースを使用しようとしています。これを達成するために、私はLandezを使用していますが、それはMBUtilに依存しています。Route-Meでオフラインデータベースを使用

今のところ、ピンが適切な場所にある灰色の画面が表示されます。ここではコンソールに出力されますものです:

initializing memory cache <RMMemoryCache: 0x4e42e50> with capacity 32 
Opening database at /Users/chrislong/Library/Application Support/iPhone Simulator/4.3.2/Applications/E53BC885-1B02-4B06-B45B-408EB9A147DE/Documents/MapOpenStreetMap.sqlite 
Map contents initialised. view: MapView at 0,0-320,411 tileSource <RMCachedTileSource: 0x4e428b0> renderer <RMCoreAnimationRenderer: 0x4e13dc0> 
initializing memory cache <RMMemoryCache: 0x5929930> with capacity 32 
Opening database at /Users/chrislong/Library/Application Support/iPhone Simulator/4.3.2/Applications/E53BC885-1B02-4B06-B45B-408EB9A147DE/Documents/MapMBTilestiles.mbtiles.sqlite 
Warning: I could not find the column named 'tile_data'. 
Warning: I could not find the column named 'tile_data'. 
Warning: I could not find the column named 'tile_data'. 
Warning: I could not find the column named 'tile_data'. 
Map contents initialised. view: MapView at 0,0-320,411 tileSource <RMCachedTileSource: 0x592a400> renderer <RMCoreAnimationRenderer: 0x5925770> 

それはMapMBTilestiles.mbtiles.sqlite、ファイルがtiles.mbtiles命名されていることは注目に値しない、とバンドルのルートではなく、Documentsフォルダに保存されています。

は、ここで私はmapViewを作成し、データベースをロードするために使用するコードです:

CLLocationCoordinate2D center = {50, 50}; 
self.mapView = [[[RMMapView alloc] initWithFrame:self.view.frame] autorelease]; 
self.mapView.backgroundColor = [UIColor blackColor]; 
self.mapView.delegate = self; 

NSURL *tilePath = [[NSBundle mainBundle] URLForResource:@"tiles" withExtension:@"mbtiles"]; 
RMMBTilesTileSource *tiles = [[[RMMBTilesTileSource alloc] initWithTileSetURL:tilePath] autorelease]; 
[self.mapView.contents removeAllCachedImages]; 
self.mapView.contents = [[[RMMapContents alloc] initWithView:self.mapView tilesource:tiles centerLatLon:center zoomLevel:0.0 maxZoomLevel:[tiles maxZoom] minZoomLevel:[tiles minZoom] backgroundImage:nil] autorelease]; 
[self addMarkers]; 

ルートMeは明らかに、すべてのファイルを読み込むされません。たとえデータベース全体を削除しても、同じログ出力が得られます。 IOW、おそらくRoute-Meがファイルを見つけることができないことが原因の問題です。どんな助けもありがとう!

+0

私はあなたがこの問題に悩まされているので、あなたにタイルイメージを追加する方法の参照を私に送ることができますか?私はマップイメージを持っていて、それをタイルにトリムするために追加できました。 ..ありがとう –

答えて

4

チェックアウト - (RMTileImage *)tileImage:MapView-> MAP-から(RMTile)タイル>タイルソース

私はラインに変更するまで、私はmap2sqliteによって生成されたsqliteのDBのいくつかの問題を抱えていた。

NSInteger y = pow(2, zoom) - tile.y - 1; 

NSInteger y = tile.y; 

私は今tilemill生成デシベルのを使用していますので、私はさらにそれに掘っていないが、私があなただったら、私はいくつかのデバッグ文に投げるだろうし、何を見てそのlをタイルあなたのdbのタイルレイアウトが何であるかを調べる。私はそれがオーダーとオーダーのタイルオーダーを並べ替えることと関連しなければならないかもしれないと思う。

- ランディ

+0

うわー!あなたのパッチはうまくいった!マップ全体が正しく表示されます。どうもありがとうございます! GitHubにログインするか、まだ登録していない場合はサインアップし、[ファイル]をフォークする必要があります(https://github.com/route-me/route-me/blob/master/MapView/ Map/RMMBTilesTileSource.m)を作成し、プルリクエストを送信してください。他の誰にとっても問題はありません。再度、感謝します! :D –

+0

同様の問題は[LandezのSergej Tatarincevによって修正されました](https://github.com/makinacorpus/landez/commit/fb0b77deddf469bfdd72e9a9d65fa04a56f1b5e1) – leplatrem

+0

それは私のために働かなかった、私はまだ灰色のビューを取得します。助けてください –

3

私は実際にこの非常に問題を抱えていました。

openstreetmapで使用されているGoogle xyzとTMSの2つの異なるタイルフォーマットがあるようです。

ランディは

NSInteger y = pow(2, zoom) - tile.y - 1; 

を強調線が他の1つに変換されます。たとえば、Maperativeを使ってマップを構築し、それをディレクトリのタイルにエクスポートし、最後にmb-utilを使用してtiles.mbtilesファイルを生成します。

私はまったく同じ問題を抱えていました。ランディーが提案した変更を行い、それが動作します。

しかし最終的に私はタイルのファイル名を正しい名前に変更するためのPHPスクリプトを書いていました。私は正直なところ、ソフトウェアのどの部分がどのフォーマットでエクスポートされているのか、まだ頭を悩ませていません。私はmbtilesがルートを意味するTMSであると考えられます - 私はxyzですが、私はそれに間違いがあります。

+0

ようこそスタックオーバーフロー;あなたのご意見ありがとうございました!これは素晴らしいウェブサイトなので、あなたが滞在し、貢献することを願っています。これを私自身で解決することは永遠に取られたでしょうか?そして、私はこのプロセスに関わるすべてのアプリケーションについてあなたが何を意味するのかを知っています。誰が何をどこでやるのか、私の頭を包み込むのに約3日かかった。 –

0

上記の変更を行いましたが、地図の中心に問題がありました。これは誰にも迷惑を持つことができます

NSInteger y = tile.y - (pow(4, ((zoom/2) - 1))); 

希望:かなりの時間のためにそれに取り組ん後、私はあなたがこれに上記の言及の行を変更します。

関連する問題