Войти
ФлеймФорумПроЭкты

PanzerMaps

#0
(Правка: 13:29) 12:08, 8 июля 2019

Название:
PanzerMaps

Платформы:
GNU/Linux, Android

Технологии:
C++, SDL2, OpenGL ES 2.0. Парсеры xml, json, libpng для утилиты экспорта.
Исходники доступны на github: https://github.com/Panzerschrek/PanzerMaps/

Описание:
Простейшее картографическое приложение на основе данных OpenStreetMap. Данные достаются из OSM файла специальной утилитой, обрабатываются и складываются в файл. Само картографическое приложение читает этот файл и рисует карту из него.
Зачем же ещё одно картографическое приложение нужно? А затем, что современные картогафические приложения крайне тяжеловесны - в них есть справочник, поиск по справочнику, поиск проезда, навигатор и много чего ещё. Я же хотел создать легковесное картографическое приложение для собственных целей - чтобы оно только карту рисовало.
Каковы же мои цели? Это пешие и велосипедные прогулки. Для ориентации на местности в них не надо иметь много данных, достаточно иметь карту дорог, раскраску местности по типу и какие-то значимые ориентиры.

Что уже есть:

  • Отображение основных площадников - воды, травы. лесов, болот, различных городских территорий, мостов, домов и т. д.
  • Отображение автомобильных дорог, железных дорог, пешеходных тропинок, заборов.
  • Отображение значащих точенных ориентиров - остановок транспорта, входов метро, памятников, опор линий электропередач, церквей, мечетей.
  • Сортировка объектов по слоям при отображении, чтобы мосты рисовались поверх воды, дороги под мостами и т. д.
  • Несколько уровней масштаба данных. На высоких масштабах данные упрощены, а некоторые отброшены.
  • Что предстоит сделать:

  • Отображение геопозиции (на Android).
  • Рисование некоторых площадников текстурой.
  • Оптимизация подготовки данных - объединение линейных объектов, оптимизация нарезки площадных объектов на выпуклые полигоны, удаление точек на одной линии и т. д.
  • Возможно, выгрузка ещё каких-то классов объектов.
  • Чего не будет:

  • Подписей объектов на карте. Для ориентации на местности они не очень то и нужны.
  • Точечных объектов всяких мест, где можно отовариться.
  • Отображения административных границ, границ парков, военных частей и т. д.
  • Отображения всяких объектов, не нужных пешеходам и велосипедистам.
  • Расширения функционала сверх обозначенного выше. Только карта и ничего кроме карты.
  • Скриншоты:

    + Показать

    Скочать безплатно и бес ригестрации:
    PanzerMaps.apk
    Файлы карт:
    leningrad_center
    kremlin
    academ
    Файл карты надо переименовать в map.pm и положить в /Android/data/panzerschrek.pnazermaps.app/files

    #1
    12:08, 8 июля 2019

    Тему создал в проЭктах, т. к. это приложение не соответствует тематике сайта (не является игровым).

    #2
    (Правка: 13:49) 12:44, 8 июля 2019

    Что-то на скриншотах не видно чего-то типа © OpenStreetMap contributors

    #3
    12:52, 8 июля 2019

    entryway
    > Что-то на скриншотах не видно чего-то типа © OpenStreetMap contributors
    Забыл про это.
    Как-нибудь добавлю это, если буду распространять проЭкт.

    #4
    12:59, 8 июля 2019

    Panzerschrek[CN]
    > PanzerMaps
    > Что предстоит сделать:

    Routing  с учетом проходимости и веса M1A , близлежашие военные обьекты.

    #5
    17:01, 8 июля 2019

    dave
    > Routing с учетом проходимости и веса
    Это уже не картографическое приложение. Ну и для целей прогулок это не надо, гуляют там где нравится, а не как ближе.

    #6
    14:28, 9 июля 2019

    Реализовал отображение геопозиции:
    Изображение

    По нажатию на кнопку включается спутниковая навигация, позиция начинает отображаться на карте (если она есть).

    #7
    9:37, 12 июля 2019

    Реализовал отображение береговых линий морей:

    + Показать

    По-хорошему надо было бы заливать синим цветом моря, но с этим есть сложности. Для этого надо вытащить береговые линии для всего мира. Но мои карты работаеют только с ограниченным небольшой областью набором данных. Я рассматривал вариант с построением примерной области заливки морем на основе ограниченных данных, но там есть большие сложности технического характера, а кроме того ещё очень неприятные артефакты в некоторых случаях. Поэтому я тупо сделал отображение берегов морей синим пунктиром.

    + Показать

    #8
    13:09, 12 июля 2019

    Panzerschrek[CN]
    > Реализовал отображение береговых линий морей:

    Пока без шейдера прилива, как у Суслика, низачот.

    #9
    15:58, 12 июля 2019

    jaguard
    > Пока без шейдера прилива, как у Суслика, низачот.
    Карте это не нужно. К тому же, на мобилке всякие навороченные шейдеры батарею жрать будут.

    Сделал чуть более красивее, текстурой. Заодно и овраги начал рисовать:

    + Показать

    #10
    14:58, 15 июля 2019

    Для случаев, когда искажения в проекции Меркатора сильно большие, запилил альтернативные проекции - стереографическую и проекцию Альберса.

    + стереографическая проекция с нанесёнными координатными линиями

    Для того, чтобы пользователь не запутался, если карта выполнена в такой проекции, рисуем ему направление на север:

    + Показать

    ФлеймФорумПроЭкты