- OpenStreetMap и android, пример простого приложения
- Как использовать OpenStreetMap в разработке собственных приложений для Android
- Open street maps android api
- Русские Блоги
- Создание картографического сервиса с использованием данных OpenStreetMap (OSM)
- 1. Что такое OSM
- Два, структура данных OSM
- 2.1. Node
- 2.2. Way
- 2.3. Relation
- 2.4. Tag
- 3. Данные OSM и загрузка
- В-четвертых, создайте картографический сервис на основе данных OSM.
- 4.1. База данных
- 4.2. Импорт данных
- 4.3. Рендеринг
- 4.4 Комплексное решение
OpenStreetMap и android, пример простого приложения
Многие разработчики, по тем или иным причинам ищут альтернативы Google maps или другим крупным коммерческим сервисам. В настоящее время, наиболее известным среди таких сервисов является OpenStreetMap
Не смотря на то что проект является полностью открытым, разработчики прилагают все усилия для того чтобы создавать проекты с использованием их сервиса было максимально просто.
Рассмотрим это на примере простого приложения для Android. В качестве библиотеки для работы с OpenStreetMap отлично подходит osmdroid. Я буду использовать Android Studio и Gradle.
Начнем создания нового проекта
Создаем новый проект из шаблона
Я буду использовать шаблон Navigation Drawer Activity , однако вам ничто не мешает использовать другой шаблон или вообще описать XML разметку вручную. После того как проект будет создан, потребуется добавить зависимость. Откроем файл build.gradle и добавим в него следующую строку:
Обратите внимание что указана версия 6.1.5, однако это не означает что необходимо указывать именно эту версию
Синхронизируем наш проект
Пора перейти к XML разметке, откроем разметку той Activity в которой будем отображать карту, у меня это content_main.xml и добавим в него MapView , должно получится примерно следующее:
Переходим к java классу MainActivity.java , так как Android Studio уже создала здесь весь необходимый код для работы шаблона Navigation Drawer Activity нам нужно только внести в него некоторые изменения. Начнем с метода onCreate :
Ну вот, теперь мы можем обозревать нашу карту, перемещать и масштабировать ее. Обратите внимание я вынес MapView map и IMapController mapController в приватные поля класса, это упростит нам дальнейшую работу с ними (Об этом в следующей статье)
Источник
Как использовать OpenStreetMap в разработке собственных приложений для Android
Привет, у меня есть встроенное приложение для Android для Android. В моем телефоне Android теперь нужно использовать приложение «Dummy Content». Теперь мне нужно использовать приложение для открытой карты и проинвестировать его в эту сборку с помощью GPS-местоположения.
Я не мог найти никакой информации в поиске Google. Может ли кто-нибудь помочь мне со ссылками или предложениями?
И что лучше и легко сделать? Карты Google или открытые карты сглаживания в устройствах Android …
пожалуйста, дай мне знать.
Если вы хотите отображать содержимое карты, вы можете сделать это с помощью Google Maps (уже в Android-библиотеках) или вы можете использовать разные данные карты (например, OpenStreetMap). Среди других есть два известных сообщества, которые разработали карты данных Android для карт OpenStreetMap:
В настоящее время Google Map View Google является самым простым в использовании интерфейсом API. К сожалению, в некоторых местах это рекламный ролик. Например, вам не разрешено разрабатывать приложение, отображающее содержимое карты Google в сочетании с инструкциями по пошаговому указанию (см. Условия обслуживания Google Maps: https://developers.google.com/maps/terms?hl=ru ). В противоположность OSMDroid можно использовать для всего.
В Интернете есть много учебников, в которых каждый шаг за шагом объясняется, как показать местоположение GPS устройства на содержимом карт в вашем приложении. Некоторые из них:
EDIT: Я получил некоторый вопрос о том, можно ли включить (и опубликовать) приложение для навигации пошагового руководства. Ответ – да. На экране лицензии вы не должны использовать googlemaps, но, например, OSMDroid здесь.
Я сделал это сам, используя OSMDroid в качестве библиотеки карт и OSMDroidBonusPack в качестве библиотеки маршрутизации, геокодирования и обратного преобразования (бонусный пакет имеет еще несколько функций, см. Все в репозитории git
Я хотел бы предоставить еще одну ссылку на существующие приложения для навигации, реализованные с помощью OSMDroid, но, похоже, они больше не поддерживаются для обновлений.
Проверьте https://github.com/zsoltk/overpasser . Это библиотека Java, облегчающая работу с API Overpass.
- Он генерирует строку запроса Overpass для вас
- Он поставляется с адаптером для дооснащения
- У этого есть образец Android, показывающий, как собрать их все вместе и показать ваши данные OpenStreetMap на Картах Google
Источник
Open street maps android api
osmdroid
osmdroid is a (almost) full/free replacement for Android’s MapView (v1 API) class. It also includes a modular tile provider system with support for numerous online and offline tile sources and overlay support with built-in overlays for plotting icons, tracking location, and drawing shapes.
Current Release: 6.1.10 Jan 30, 2021
Current Development version: 6.1.11-SNAPSHOT
Next Release Version (planned): 6.1.11
Note: check your calendar, it may take up to a few days for all global mirrors to update.
Please read the osmdroid wiki for tutorials on integration.
Gradle dependency
Be sure to replace with the last release version above.
Maven dependency
Platform or API Level (API level 8 = Platform 2.2)
Want the latest and greatest?
We periodically publish snapshots to maven central. If you’re interesting in trying it out, using the following:
Use at your own risk though, it may not be stable or may have bugs or performance issues. If you run across any, please report them.
Side note: gradle’s cached dependencies and doesn’t really handle snapshot very well. To force gradle to update snapshots on every build, try adding this to your root build.gradle file.
You can also build your project using the gradle option —refreshDependencies
Related and important wiki articles
I have a question or want to report a bug
If you have a question, please view the osmdroid FAQ.
You can also view the Stack Overflow osmdroid tag and osmdroid Google Group where you can get feedback from a large pool of osmdroid users.
If you still have an issue, please check the Changelog page to see if this issue is fixed in a newer or upcoming version of osmdroid.
If think you have a legitimate bug to report then go to the Issues page to see if your issue has been reported. If your issue already exists then please contribute information that will help us track down the source of the issue. If your issue does not exist then create a new issue report. When creating an issue, please include the version of osmdroid, the Android platform target and test device you are using, and a detailed description of the problem with relevant code. It is particularly helpful if you can reproduce the problem using our OpenStreetMapViewer sample project as your starting point.
I want to contribute
For your reference, the dashboard provides a high level overview of the repository including structure of UI classes, module dependencies, external libraries, and other components of the system.
The OSMBonusPack project adds additional functionality for use with osmdroid projects.
Building from source and using the aar in your app
Thanks to Gradle Fury, this publishes the artifacts to mavenLocal.
In your root build.gradle file, add mavenLocal() if not present.
Then in your APK or AAR project that needs osmdroid.
Источник
Русские Блоги
Создание картографического сервиса с использованием данных OpenStreetMap (OSM)
Рисунок Картографический сервис Пекина просто выпущен с использованием данных OSM
1. Что такое OSM
Open Street Map (OpenStreetMap, сокращенно OSM) — это совместный проект онлайн-карты. Цель состоит в том, чтобы создать карту мира с бесплатным контентом, который может редактировать каждый (wiki: http://wiki.openstreetmap.org/wiki/Main_Page ). Особенно похвально то, что данные osm имеют открытый исходный код и могут быть загружены и использованы бесплатно.
Два, структура данных OSM
OpenStreetMap включает пространственные данные и данные атрибутов. Среди них пространственные данные в основном включают три типа: точечные ( Nodes ),Дорога( Ways ) И отношения (R elations ) эти три примитива составляют весь экран карты. из их, Nodes Определяет положение точки в пространстве; Ways Линия или область определены; R elations (Необязательно) Определяет отношения между элементами.
Теги данных атрибутов используются для описания вышеупомянутых примитивов векторных данных. (http://wiki.openstreetmap.org/wiki/Elements)
2.1. Node
node Географическая точка координат определяется широтой и долготой. В то же время вы можете height =* Отметьте высоту объекта; пройдите layer =* с участием level =*, Можно отметить слой карты, на котором расположен объект, и количество слоев в здании; place =* and name = * для обозначения имени объекта. Одновременно, way Также через несколько точек ( node ) Соединены в линии (поверхности), чтобы сформировать.
2.2. Way
Состоит из 2-2000 узлов (узлов)way。wayОн может представлять следующие 3 типа графических объектов (незамкнутые линии (Open polyline ), замкнутая линия (Closed polyline),площадь(Area )). Для пути более 2000 узлов может быть обработано сегментацией.
Незамкнутая линия: сегмент линии, который не закрывается в конце. Обычно может использоваться для реального изображения дорог, рек, железных дорог и т. Д.
Замкнутая линия: линия, соединенная в конце. Например, в реальности он может представлять собой круг метро.
Территория: закрытая территория. Обычно используется landuse =* Для разметки местности и т. Д. Чтобы
2.3. Relation
Один Relation Он используется для описания взаимоотношений двух или более примитивов (узлов, путей или других отношений), и взаимное отношение осуществляется через role Определить, в том числе:
A) Маршрут: укажите дороги, велосипедные дорожки, железные дороги и т. Д.
Б) Несколько полигонов: определите такие области, как здания, берега рек и т. Д.
C) Граница: устанавливается для определения административных границ.
D) Ограничения: используется для описания ограничений, таких как «поворот не налево».
2.4. Tag
Теги не являются основными элементами карты, но каждый элемент использует теги для записи информации о данных. Запишите данные через «ключ» и «значение» (должно быть понятнее, если вы понимаете xml или базу данных?). Например, вы можете передать highway = residential Для определения дорог в жилых районах; в то же время можно использовать дополнительные пространства имен для добавления дополнительной информации, например: maxspeed:winter = * означает максимальное ограничение скорости зимой.
3. Данные OSM и загрузка
В основном существуют следующие типы форматов данных osm, которые можно загрузить со следующего веб-сайта.
формат данных osm:
OSM XML – xml-format provided by the API
PBF – highly compressed, optimized binary format similar to the API
o5m – for high-speed processing, uses PBF coding, has same structure as XML format
OSMJSON – json variant of OSM XML
сайт загрузки данных osm:
В-четвертых, создайте картографический сервис на основе данных OSM.
OSM wiki предоставляет очень ценную схему архитектуры, которую мы можем изучить шаг за шагом в соответствии с этой схемой архитектуры.
4.1. База данных
Подключаемый модуль Postgresql + PostGIS очень подходит для хранения геопространственных данных. Базовая база данных на приведенной выше схеме архитектуры также является этой комбинацией, поэтому мы также используем эту комбинацию.
А) Скачайте плагин postgresql + postGIS
sudo apt-get install postgresql postgresql-contrib postgis postgresql-9.1-postgis
После установки нам нужно изменить пароль пользователя postgres, иначе мы не сможем использовать сервер базы данных. Запустите команду psql от имени системного пользователя postgres и введите в терминал следующее:
sudo su postgres -c psql template1
В это время появится новое приглашение, введите следующие две команды и замените новым паролем:
ALTER USER postgres WITH PASSWORD ‘ ‘;
Б) Создание пользователей и баз данных
postgres # CREATE USER zhanlijun WITH PASSWORD ‘xxxx’;
postgres # CREATE DATABASE osm;
postgres # GRANT ALL PRIVILEGES ON DATABASE osm to zhanlijun;
c) Добавить расширение пространства для базы данных
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
— fuzzy matching needed for Tiger
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION postgis_tiger_geocoder;
— Используется для хранения тегов атрибутов, ключей и значений
CREATE EXTENSION hstore;
4.2. Импорт данных
Данные osm, загруженные с веб-сайта, обычно находятся в формате файла (например, xml, pbf и т. Д.). Чтобы использовать его, нам необходимо импортировать его в базу данных. Для этого требуется инструмент импорта. На схеме архитектуры используется osmpsis, но он неудобен в использовании. Рекомендуется Используйте osm2pgsql.
А) Установите osm2pgsql
Run sudo apt-get install software-properties-common to install the command add-apt-repository if the command can’t be found.
Run sudo add-apt-repository ppa:kakrueger/openstreetmap to add the PPA
Run sudo apt-get update to update your packaging system.
Run sudo apt-get install osm2pgsql to install the osm2pgsql package.
Б) Установите protobuf (чтобы импортировать данные формата pbf)
sudo apt-get install libprotobuf-c0-dev protobuf-c-compiler
C) Импортировать базу данных
osm2pgsql -s -U zhanlijun -d osm /Users/zhanlijun/Downloads/planet_116.104,39.667_116.892,40.066.osm.pbf -H localhost -W;
Заметка: Существует два режима импорта данных osm2pgsql: normal and slim mode。
В обычном режиме в памяти создаются следующие три промежуточные таблицы, которые после завершения импорта удаляются, что увеличивает скорость.
- planet_osm_nodes
- planet_osm_ways
- planet_osm_rels
Тонкий режим полностью помещает промежуточные результаты в базу данных. Преимущество тонкого режима — облегчение обновлений.
Разница между ними заключается в том, следует ли добавлять «-s», что означает тонкий режим, в этой статье используется тонкий режим.
После импорта данных в тонком режиме в базе данных будет создана следующая таблица.
4.3. Рендеринг
Данные были импортированы в postgresql, данные должны быть отображены ниже, то есть векторные данные в postgresql отображаются в изображения.
4.3.1 Рендеринг с помощью Mapnik
В настоящее время самым известным движком рендеринга карт с открытым исходным кодом является Mapnik.
Mapnik может отображать различные источники данных, включая базы данных, такие как postgresql, и данные формата файлов, такие как shapefile, формат osm.xml и т. Д.
Возьмите в качестве примера данные формата шейп-файла, загрузите векторные данные для визуализации: http://www.naturalearthdata.com/
1) Откройте редактор Python
2) Импортировать привязки mapnik python
1 import mapnik
3) Создайте карту
4) Создайте стиль
Установите стиль в соответствии с нашими потребностями, и стиль определяет окончательный результат рендеринга.
5) Создать источник данных
1 ds=mapnik.Shapefile(file= ‘ Users/zhanlijun/Downloads/110m-admin-0-countries/ne_110m_admin_0_countries.shp ‘ )
Слой Mapnik — это основной контейнер данных.
7) Подготовить рендеринг карты
8) Визуализируйте карту
В итоге мы получаем карту мира в формате png: world.png
4.3.2 Визуализация с помощью TileMill
Использовать Mapnik непросто, особенно при настройке стилей. Ниже мы используем TileMill для рендеринга, TileMill Ядро — Мапник.
Преимущество TileMill в том, что вы получаете то, что видите: стиль настраивается справа, а результат можно сразу отобразить слева. Кроме того, результаты могут быть отображены (следующий рисунок является результатом использования TileMill для визуализации данных OSM Пекина).
4.4 Комплексное решение
GeoServer + OpenLayers + PostGIS отображает наложенные динамические векторные данные.
sudo apt-get update
sudo apt-get install unzip openjdk-6-jre
echo «export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64» >>
Источник