Delphi+openstreetmap

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

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


person gtujan    schedule 28.01.2010    source источник


Ответы (5)


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

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

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

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

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

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

person jachguate    schedule 28.01.2010

Как я понимаю, есть 3 способа сделать это:

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

  • Вам нужно понять, как генерируются тайлы, что не совсем сложно: в основном схема генерации 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

person M0-3E    schedule 28.01.2010

Ой! Я попытался предоставить несколько гиперссылок в своем сообщении, но как новый пользователь 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 кажется тем, что мне нужно, но, к сожалению, его больше нет.

person Paul Breneman    schedule 03.02.2010
comment
Я получил OpenStreetMap, хорошо работающий в моем проекте, используя openstreetmap-fpk, указанный выше. Для справки вот еще один проект (iPhone): code.google.com/p/route- я - person Paul Breneman; 16.03.2010

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

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

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

person Stelife    schedule 06.03.2012

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

person Francesca    schedule 28.01.2010
comment
Самое интересное — перехватывать клики и другие взаимодействия с картой браузера ;-) - person Mawg says reinstate Monica; 22.04.2020