Дельфи + OpenStreetMap - PullRequest
       27

Дельфи + OpenStreetMap

4 голосов
/ 28 января 2010

Есть ли vcl или проект (в delphi), который позволил бы мне загружать плитки OSM и отображать их в приложении?

Я попытался встроить браузер, и он отлично работал, но мне нужен способ отображения карт в автономном режиме.

Ответы [ 5 ]

3 голосов
/ 28 января 2010

На мой взгляд, есть 3 способа сделать это:

  • Сохранение всех отображаемых плиток в виде одного изображения (это можно сделать с помощью компонента TWebBrowser или TEmbeddedBrowser): вам нужно перейти к адресу карты (OSM Mapping Server) на основе заданных координат (верхний левый угол) а затем сделать снимок. Вам необходимо пересчитать базовые координаты (верхний левый угол) после каждого снимка.

  • Вам нужно понять, как генерируются плитки, что не так сложно: в основном схема генерации osm тайлов следующая: http://osmserver.org/tiles/tile/x/y/z.png Как только вы поймете, как это работает, вы можете рассчитывать URL тайлов по коду и загружать их по одному. Для получения дополнительной информации о схеме генерации плиток смотрите здесь: хорошая ветка на многообразном форуме: http://forum.manifold.net/forum/t71011.13#75206 http://wiki.openstreetmap.org/wiki/Slippy_Map http://wiki.openstreetmap.org/wiki/Tiles%40home или если вам нужно пойти дальше: http://wiki.openstreetmap.org/wiki/OSM_Protocol_Version_0.5

  • загрузите все карты OSM (доступны в Интернете) и используйте компонент VCL для их отображения (Tatukgis DK ...)

С наилучшими пожеланиями, Mo3ez

2 голосов
/ 03 февраля 2010

Oops! Я попытался указать несколько гиперссылок в своем сообщении, но как новый пользователь StackOverflow я ограничен только одной. Вы можете ознакомиться с веткой сообщений «Требуется решение для отображения карты» (25 января 2010 г.) по адресу: embarcadero.public.delphi.thirdpartytools.general

Я пытаюсь решить подобную проблему. Мне нужно отобразить карту всего округа или города с помощью Delphi, а затем поместить на карту пользовательские значки. Мне не нужна маршрутизация или очень подробная карта. В прошлом я использовал компонент «горячей точки» TMS для пользовательских значков поверх TImage. Теперь мне нужно, чтобы клиент мог выбрать собственную карту для статического фонового изображения.

Бесплатный класс управления MFC GUI (с исходным кодом), который реализует отображение плиток OpenStreeMap: www.naughter.com/osmctrl.html Там есть исполняемый файл, который показывает, как он работает.

Этот блок предназначен для вычисления URL-адресов для TileServer проекта OpenStreetMap и других полезных утилит, которые могут потребоваться. Если вы хотите использовать OpenStreetMap в своих программах на Паскале, то это для вас. http://code.google.com/p/openstreetmap-fpk/

Я также рассматриваю возможность использования бесплатных карт Tiger / Line. Они выглядят довольно хорошо в бесплатной программе для Linux (xastir).

TatukGIS выглядит очень хорошо (и дорого). Я, конечно, не нуждаюсь в полном решении ГИС, так что, кажется, это просто излишне просто отображать карту. Но если я не найду более простого решения, это все же может быть лучше, чем интеграция с MS MapPoint.

TGlobe выглядит как то, что мне нужно, но, к сожалению, оно больше недоступно.

2 голосов
/ 28 января 2010

Я не очень хорошо знаю проект OpenStreetMap, но есть шанс, что у самого проекта есть программное обеспечение для «просмотра» карт внутри страницы.

Вы можете достичь своей цели: показывать карты в автономном режиме, используя ту же базовую конструкцию, которую вы сейчас используете для пользовательского интерфейса: встроенный браузер.

То, что вы изменяете, - это URL-адрес, к которому браузер будет подключаться к чему-то вроде (http://localhost:3458),, делая ваше приложение своим собственным веб-сервером, например, с Indy TIdHTTPServer, привязанным к порту 3458 (только примерный порт).

Таким образом, вы можете предоставлять контент для встроенного браузера изнутри вашего приложения, таким же образом Delphi IDE (> = 2005) сама предоставляет контент для главная страница вы видите, когда запускаете ее (фактически встроенный веб-браузер).

Для этого браузера вы обслуживаете страницу просмотра, все ее зависимости и файл OSM. Единственным ограничением этой идеи является то, что зритель ДОЛЖЕН выполнять все действия на стороне клиента (например, это может быть javascript, flash и т. Д.). Никаких серверных сценариев, если вы не готовы «имитировать» поведение серверной стороны или интегрировать свое приложение с обработчиком сценариев (не слишком просто).

Другой шанс - использовать THBImage , который предлагает интеграцию OpenStreetMap с Delphi и (не работает) демонстрационную версию сайта.

1 голос
/ 06 марта 2012

посмотрите StelMAP для Delphi с OSM

Компонент для просмотра карты проекта OpenStreetMap for Delphi 2010 без использования браузера или скриптов.

Вы можете просматривать карты в автономном режиме. Поддержка прокси-серверов для работы в сети. Многопоточная загрузка мозаичных карт ускоряет процесс загрузки и просмотра карт. Набор процедур и свойств позволяет добавлять компонент для сопоставления неограниченного количества слоев, форм и изображений.

0 голосов
/ 28 января 2010

Не знаю о файлах OSM, но если вы можете открыть их в браузере, вы всегда можете встроить TWebBrowser в ваше приложение Delphi и загрузить в него файлы.
Не самый элегантный, но должен работать ... (требуется IE)

...