1

jpeg と png のタイルが混在する mbtiles データベースがあります。PNG タイルは透過性の理由から存在しますが、osmdroid で表示すると、透過領域は黒くなります。通常、黒い透明領域は、画像が透明をサポートする形式ではなく、JPEG のようにレンダリングされていることを示します。また、注目に値するのは、データベースは、私が使用する他のビューアーで正常にレンダリングされることです。

私は osmdroid api とコードベースにかなり慣れていません。誰かが調べるのに適した場所や、検査できるクラス名を提供できますか? 私はこの問題を広範囲にグーグルで検索し、誰かが正しい道に沿っていると思うことをしているを見つけましたが、そのクラスをオーバーライドしても正しいと思われる png タイルが得られません。

ティア、トラン

4

1 に答える 1

2

リンクしたブログ記事を書き、osmdroidのソースを調べましたが、問題の解決策を見つけるためのセットアップとデータベースにあるタイルに関する詳細情報が不足しています。

しかし、いくつかのクラス名を尋ねたので、私はあなたのタイルがどのように進むかをあなたに教えようとします-それからあなたは自分でコードを見ることができますそしてこれがあなたが黒い領域の理由を見つけるのに十分役立つことを願っています

1)[TilesOverlay.java]は、座標(x、y)とズーム率を含むタイルをタイルプロバイダーに要求します。#Line 168

2)[MapTileProviderArray](他のプロバイダーの場合は、そこにあるメソッド "getMapTile"を見つける必要があります)は正しいタイルをロードしようとします#Line 121

3)[MapTileModuleProviderBase]は、特定のタイルプロバイダーにリクエストを送信します-あなたの場合、ファイルアーカイブプロバイダー#Line241を推測します

4)[MapTileFileArchiveProvider]は、mbtilesデータベースからデータへの入力ストリームを取得します。#Line 210&169

5)[MBTilesFileArchive]は、要求されたタイルのデータベースを読み取ります#Line 56

6)[MapTileFileArchiveProvider]は、指定されたtileSource#Line215からビットマップを要求します

7)[BitmapTileSourceBase]は、AndroidクラスのBitmapFactoryを使用してビットマップ# Line130を作成します

8)[MapTileModuleProviderBase]はビットマップ(#Line 210)をプロバイダー[MapTileProviderArray](#Line 135)に渡し、最後に[MapTileProviderBase]はビットマップをキャッシュに追加し、タイルを再描画するためのメッセージを送信します(#Line 108&113)

キャッシュはすべてのタイルソースとプロバイダーのビットマップで機能するため、問題がさらに大きくなることはないと思います。問題がビットマップのキャッシュにある場合、osmdroidシステム全体に透明なタイルはまったくありません。したがって、問題はこれらのステップの間のどこかにあると思います。

これが問題の発見に役立つことを願っています。

あいさつ

PS:私は通常ここに投稿していないので、アカウントを持っておらず、2つのリンクしか提供できません。私が言及したすべてのファイルはここで見つけることができます:osmdroidtrunk

于 2013-01-03T05:26:35.393 に答える