2017-02-03 4 views
1

私は資産のsqliteタイルを使用してオフラインマップを作成しようとしました。 sqliteファイルをosmdroidフォルダに移動しますが、マップの一部しか読み込まれません。sqliteタイルのOSMDroidグレー領域

MOBACを使用してsqliteファイルを作成しましたが、同じレイヤーまたは別のレイヤーを使用して異なるズームレベルを選択し、PNGとして強制的に再描画しました。

は、マップは、次のコードを使用して作成されます。

map = (MapView) findViewById(R.id.mapview); 
    map.setTileSource(TileSourceFactory.MAPNIK); 
    MyLocationNewOverlay mLocationOverlay = new MyLocationNewOverlay(new GpsMyLocationProvider(StepActivity.this), map); 
    mLocationOverlay.enableMyLocation(); 
    map.getOverlays().add(mLocationOverlay); 
    map.setBuiltInZoomControls(true); 
    map.getController().setZoom(15); 
    map.setClickable(false); 
    map.setUseDataConnection(false); 
    map.setMinZoomLevel(15); 
    map.setMaxZoomLevel(18); 

しかし、マップがロードされたとき(それは普通のことだ場合、私は知らない、いくつかの時間を取ります)。 地図のほとんどがグレー表示されているため、一部を読み込むために何度もズームイン/ズームアウトする必要があります。

表示可能な地図をすべて読み込む方法がわかりません。

答えて

1

MOBACで使用されているタイルソースの「名前」は、例では「MAPNIK」と一致する必要があります。設定されている内容を確認するには、sqlite3コマンドラインツールを使用するか、sqliteマネージャプラグインを使用してfirefoxを設定します。

select * from tilesはあなたがmobacでズームレベル15を選択してください。それが

あなたの例のコードも15にズームレベルを設定すればよいですか?アプリがデータベース内にあることがわかっている場所からアプリが起動するときに、デフォルトの緯度/経度を設定すると役立ちます。これらのズームレベルのコンテンツがそれほど大きくなく、どこにどこにいるかを知るのに役立ちますので、0〜9程度のズームレベルを含めると便利です。

遅延はおそらく、起動時に資産から/ sdcardにコピーされたことによるものです。また、マップビュー(setContentView)を作成する前にosmdroidがデータベースを見つけることができるデータベースが存在することを確認する必要があります。これがオプションでない場合は、コピーアクションが完了した後にresetマップタイルプロバイダを使用することもできます。mapView.setTileProvider(new MapTileProviderBasic(context));

+1

'mapView.setTileProvider(新しいMapTileProviderBasic(コンテキスト));どうもありがとうございました。 setTileProviderとは正確に何ですか?私はそれについて多くの情報を見つけることはありません。 – Wiicolas

+0

タイルプロバイダは、すべてのタイルをロードし、表示用のディスプレイを見つけるためのさまざまなメカニズム(オンライン、オフライン、キャッシュなど)を集約します。初期化すると、オフラインタイルアーカイブがスキャンされます。したがって、それをバウンスするとスキャンがオフになります – spy

関連する問題