Вопрос по android – Названия улиц openstreetmaps более читабельны на Android

0

Я создаю Android-приложение с данными офлайн-карт, используя Openstreetmaps и OsmDroid. На устройстве с разрешением MDPI 320x480 пикселей карта выглядит нормально, но на устройстве с экраном HDPI с разрешением 480x800 пикселей названия улиц маленькие, и их немного сложнее для чтения. Данные моей карты до 18-го уровня масштабирования, максимально возможного для загрузки и использования с источником мозаики Mapnik, загружаются в виде zip-файла с SD-карты. Мои местные карты из определенного региона Брюсселя (Бельгия).

Снимок экрана устройства MDPI с разрешением 320x480 пикселей:

enter image description here

Снимок экрана устройства HDPI с разрешением 480x800 пикселей:

enter image description here

Если вы видите эти виды в приложении на устройстве, карта MDPI хорошо читается, на карте HDPI названия улиц меньше.

Есть ли способ сделать названия улиц также более удобочитаемыми на устройстве HDPI, чтобы у пользователя была идея, что он увеличит масштаб карты на один шаг дальше? Потому что невозможно перейти на уровень масштабирования 19, потому что для него нет данных openstreetmaps. Таким образом, небольшое обходное решение с легким и небольшим временем внедрения / работой может быть для меня нормальным. Масштабирование теперь выполняется, проводя по карте. Если вам также нужен код, дайте мне знать, и я опубликую его.

Заранее спасибо.

Kr

Ваш Ответ

2   ответа
3

В этом ответе я немного объясню, как я изменил размер названий улиц.

В jar-файле MapsForge есть xml-файл, который будет стандартно использоваться для визуализации данных карты. Вы также можете скачать этот файл, проверив исходный код с сервера:http://mapsforge.googlecode.com или загрузите сам xml-файл отсюда:http://mapsforge.googlecode.com/svn/trunk/mapsforge-render-theme/src/main/resources/osmarender/osmarender.xml, Итак, у вас есть основы для настройки собственного файла рендеринга. Я немного подправил это так:

(фрагмент XML-файла):

enter image description here

На вики-странице страницы MapsForgeRenderThemeAPI (на сайте выше) вы можете найти, как настроить собственный файл рендеринга и что означают атрибуты e, k, v в элементе правила. Как вы можете видеть, есть элемент правила с e = "way", k = "area", v = "~ | no | false" внутри элемента правила пути без туннеля где-то под элементом правила пути. Каждый элемент правила под этим элементом имеет e = "way", k = "шоссе" и значение v, равное параметрам openstreetmap. При входе на страницу редактирования на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. Этот элемент определяет, как текст будет отображаться внутри обводки (цвет, ширина, размер шрифта, ...). Итак, этот элемент нам нужен! В моем примере, как вы можете видеть, размер шрифта для названий улиц для третичной дороги будет отображаться с размером 32 пикселя для уровня увеличения 14 или выше.

Теперь мы хотим использовать наш собственный XML-файл темы рендеринга:

Я добавил свой собственный файл render-xml в папку ресурсов моего проекта. После запуска я копирую файл в место, откуда я могу его прочитать, когда это необходимо. В упражнении, где вы обрабатываете свою карту mapsforge, вам нужно всего лишь связать этот файл с помощью кода, подобного этому (пример):

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

Обратите внимание, что setRenderTheme (File) генерирует исключение FileNotFoundException.

Итак, это все для изменения названий улиц с помощью mapsforge. Вы можете визуализировать всю карту как хотите!

Спасибо сообществу разработчиков MapsForge.

Повеселись!

Kr

4

Osmdroid работает с плитками, которые являются статическими изображениями PNG. Вы не можете изменить изображения плитки. Если вы хотите иметь лучшее картографическое решение, попробуйте MapsForge. Это приложение / библиотека работает с данными карт и отображает их динамически. Таким образом, вы получаете больше контроля над рендерингом карт и можете настраивать тексты, шрифты и цвета.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded pinyin_samu
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded pinyin_samu

Похожие вопросы