0

Openstreetmaps と OsmDroid を使用して、オフライン マップ データで Android アプリを構築しました。MDPI 320x480 ピクセルのデバイスでは、マップは問題ないように見えますが、480x800 ピクセルの HDPI 画面を備えたデバイスでは、通りの名前が小さく、読みにくいです。ダウンロードして Mapnik タイル ソースで使用できる最大ズーム レベル 18 までのマップ データは、SD カードから zip ファイルとしてロードされます。私のローカル マップは、ブリュッセル (ベルギー) の定義された地域のものです。

320x480 ピクセルの MDPI デバイスのスクリーンショット:

ここに画像の説明を入力

480x800 ピクセルの HDPI デバイスのスクリーンショット:

ここに画像の説明を入力

デバイスのアプリでこれらのビューが表示される場合、MDPI マップは読みやすく、HDPI マップでは通りの名前が小さくなっています。

通りの名前も HDPI デバイスで読みやすくする方法はありますか?ユーザーは、マップ上でさらに 1 段階ズームすると思いますか? ズーム レベル 19 に移動することはできません。openstreetmaps データがないためです。そのため、実装時間/作業が簡単で少ない小さな回避策は、私にとっては問題ありません。地図上でスワイプすることでズームができるようになりました。コードも必要な場合はお知らせください。投稿します。

前もって感謝します。

KR

4

2 に答える 2

4

Osmdroidは、静的なPNG画像であるタイルで機能します。タイル画像を変更することはできません。より優れたマッピングソリューションが必要な場合は、MapsForgeを試してください。このアプリ/ライブラリは地図データを処理し、それらを動的にレンダリングします。このようにして、マップのレンダリングをより細かく制御でき、そのテキスト、フォント、および色をカスタマイズできます。

于 2012-06-04T15:40:25.443 に答える
4

この回答では、通りの名前のサイズをどのように変更したかを少し説明します。

MapsForge の jar ファイルには、マップ データのレンダリングに標準で使用される xml ファイルが含まれています。このファイルは、サーバーからソース コードをチェックアウトしてダウンロードすることもできます: http://mapsforge.googlecode.comまたは、ここから xml ファイル自体をダウンロードします: http://mapsforge.googlecode.com/svn/trunk/mapsforge -render-theme/src/main/resources/osmarender/osmarender.xml . これで、独自のレンダリング ファイルを微調整するための基本ができました。次のように少し調整しました。

(xml ファイルのスニペット):

ここに画像の説明を入力

MapsForgeRenderThemeAPI ページの Wiki ページ (上のサイト) で、独自のレンダリング ファイルを微調整する方法と、ルール要素の e、k、v 属性の意味を確認できます。ご覧のとおり、way rule-element の下のどこかに、no-tunnel way rule-element 内に e="way", k="area", v="~|no|false" を含む rule 要素があります。この要素の下のすべてのルール要素には、openstreetmap パラメーターと等しい e="way"、k="highway"、および v 値があります。openstreetmap.orgの編集ページにログインすると、名前を微調整したい通りの種類を見つけることができます。

ここで、特定の種類の道路に必要なフォント サイズを正確に指定する方法を説明します。例として、三次道路要素を取り上げます。ルール要素の種類ごとに、次のようなコードが含まれています。

<rule e="way" k="highway" v="tertiary">
    <line stroke="#ffff90" stroke-width="1.5" />
    <rule e="way" k="*" v="*" zoom-min="14">
        <pathText k="name" font-style="bold" font-size="32" stroke="#ffff90" stroke-width="2.0" />
    </rule>
</rule>

line 要素は、道路の表示方法 (色、幅、黒枠など) を指定します。ここでも、pathText 要素を含むルール要素があります。この要素は、ストローク内のテキストの表示方法 (色、幅、フォント サイズなど) を指定します。だから、これは私たちが必要とする要素です!私の例では、ご覧のとおり、3 次道路の道路名のフォント サイズは、14 以上のズーム イン レベルで 32 ピクセルのサイズで表示されます。

ここで、独自のレンダー テーマ xml ファイルを使用します。

プロジェクトの assets フォルダーに独自の render-xml ファイルを追加しました。起動時よりも、必要なときに読み取れる場所にファイルをコピーします。mapsforge マップを処理するアクティビティでは、次のようなコードを実装してこのファイルにリンクするだけです (例):

File f = new File(Environment.getExternalStorageDirectory(), myRenderTheme.xml);
mapView.setRenderTheme(f);

setRenderTheme(File) は FileNotFoundException をスローすることに注意してください。

これで、mapsforge で通りの名前を変更することができました。マップ全体を好きなようにレンダリングできます。

MapsForge 開発コミュニティに感謝します。

楽しむ!

KR

于 2012-07-22T23:47:41.113 に答える