API-интерфейс карты, который допускает координаты угловой точки изображения и подходит для не веб-языка - PullRequest
1 голос
/ 06 октября 2011

Меня попросили добавить поддержку карт из одного из любого количества API карт для географического отображения в нашем программном обеспечении. В настоящее время на дисплее отображаются географические координаты, такие как серия GPS-исправлений; мы хотели бы показать карту позади них. Мы используем C ++ Builder 2010 (а иногда и Delphi ), так что это программное обеспечение, скомпилированное собственными силами, а не веб-приложение.

Проблема в том, что многие API-интерфейсы карт работают, когда вы указываете точку, и API возвращает карту некоторого размера с центром вокруг этой точки. Основной пример - Google: укажите центр, размер и масштаб (в пикселях) . Это означает, что для изображения, которое вы возвращаете, вы не знаете геолокации угловых точек изображения (если я что-то пропустил - это был бы хороший ответ!) Это означает, что вы не можете нарисовать изображение в качестве фона для географического участка.

Чтобы объяснить это по-другому: у окна есть левая и правая границы, скажем, 147 и 147,2 градуса восточной долготы; верхняя и нижняя границы, скажем, 42,5 и 42,6 градусов южной широты. Чтобы заполнить это окно картой, вам нужно иметь возможность запросить карту, которая охватывает угловые точки окна, и знать координаты возвращенного изображения (изображений), чтобы правильно отобразить изображение.

Итак, я обращаюсь к совету SO по поводу хорошего API карты, который отвечает следующим требованиям:

  • Позволяет запрос, который включает четыре угловые точки; возвращаемый результат имеет известные координаты углов изображения
  • Прост в использовании извне веб-браузера, в нативном коде. Чтобы дать вам представление, такой API, как API статического изображения Google - отличный ответ, он прост в использовании и прост в обращении с выводом; их Javascript API будет ужасным ответом; их API веб-сервисов будет приемлемым, но требует обработки JSON или XML, поэтому сложнее, чем нужно.

Ответы [ 3 ]

5 голосов
/ 06 октября 2011

OpenStreetMap позволяет получить изображение, указанное в ограничительной рамке, что-то вроде этого:

http://tile.openstreetmap.org/cgi-bin/export?bbox=min_lon,min_lat,max_lon,max_lat&scale=3500&format=png

Недостатком является то, что URL-адрес часто приводит к ошибке, либо из-за того, что вы запросили слишком большое изображение, либо из-за того, что его сервер слишком занят. Возможно, вы захотите запустить свой собственный сервер с использованием данных OSM. Другое преимущество работы вашего собственного сервера заключается в том, что вы можете настроить рендер.

1 голос
/ 08 октября 2011

Используйте запрос OGC WMS GetMap , чтобы получить изображение

На этой странице объясняется, как получить это изображение.Изображение от DEMIS, но есть тысячи провайдеров с услугами WMS

enter image description here

Я рекомендую DEMIS , но вот несколько списков бесплатныхУслуги WMS.

0 голосов
/ 06 октября 2011

MapWinGIS.ocx на http://www.mapwindow.org/ может быть тем, что вы ищете.Элемент управления хорошо работает с Delphi. Он создает карты на заказ, используя файлы * .shp.Это с открытым исходным кодом и не зависит от Интернета.Исходный код не Delphi.

Аналогичный вопрос был задан несколько лет назад: Позволяет ли какой-либо API карты получить точную область? в stackoOverflow Ответы на этот запрос могут дать вамидеи, как вы можете использовать API статических изображений Google.OpenStreeMap похож и имеет некоторые из тех же «возражений», которые пользователи имеют против статических карт Google.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...