Нужна клиентская интерактивная 2D-карта мира: лучший пакет карт? Или лучшая библиотека графики / холста C++ для ее создания?

Мне нужна 2-мерная политическая карта мира, на которой я буду рисовать значки, текст и перемещающиеся линии. Пользователи будут взаимодействовать с картой, размещать и перемещать значки, а также увеличивать и уменьшать масштаб карты.

Интерфейс Google Maps не очень далек от того, что мне нужно, но это НЕ связано с сетью; это приложение Windows MFC, и я хочу поговорить с C++ API для карты, которая находится в приложении, а не в веб-интерфейсе. В идеале мне тоже не нужен отдельный сервер, и любой сервер ДОЛЖЕН работать локально (а не в Интернете). Какой стандартный пакет карт или графическую библиотеку мне следует использовать для этого? У меня нет опыта программирования графики.

Это строго 2D, поэтому я не думаю, что было бы уместно что-то вроде Google Earth или WorldWind. Было бы здорово поддерживать хорошую векторную графику, а также важно легко рисовать растровые изображения.

Все стандартные варианты кажутся веб-ориентированными. SDL - это все, что я знаю о гибком программировании на холсте, но похоже, что создание моей собственной карты потребует много усилий от того, что, вероятно, является распространенной проблемой. Есть ли что-нибудь более высокого уровня? Может быть, есть способ взаимодействовать с Adobe Flash-объектом? Я довольно невежественен.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
5 577
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы можете расширить свой поиск, используя термин GIS (Географическая информационная система). Я уверен, что будет проще. На эту тему есть много материалов.

Вот страница, которую я нашла: http://www.ucancode.net/Gis-Source-Code.htm

или: http://opensourcegis.org/

Проблема в том, что «ГИС», кажется, означает взаимодействие с данными на каком-то сервере сортировки. Все, что мне нужно, это простая небольшая статическая карта мира, на которой можно рисовать и анимировать.

kingkongrevenge 01.12.2008 23:05
Ответ принят как подходящий

Возможно: http://www.codeplex.com/SharpMap

ESRI MapObjects http://www.esri.com/software/mapobjects/index.html ESRI MapObjects LT http://www.esri.com/software/mapobjectslt/index.html

Видеть http://www.esri.com/software/mapobjectslt/about/mo_vs_lt.html для сравнения двух наборов функций MapObjects.

ESRI может иметь замену библиотекам MapObjects.

Вы можете попробовать Набор инструментов Mapnik C++ / Python для ГИС.

Вы можете взглянуть на Мраморный виджет, который является частью проекта KDE Marble. Для этого также существуют двоичные файлы Windows, но они могут зависеть от Qt.

Да, у Marble также есть то преимущество, что он предоставляет своего рода готовое решение в едином элементе управления (называемом «виджетом» в технических терминах Qt).

Зависимость от Qt (которая, кстати, является единственной зависимостью) также может рассматриваться как преимущество: будущая версия Qt лицензируется по LGPL, поэтому даже если вы планируете использовать это в проприетарном приложении, не должно быть никаких реальных заботы. И, конечно же, Qt и Marble являются кросс-платформенными и предоставляют очень интуитивно понятный и простой для понимания API. В отличие от обычных ГИС-решений, Marble API и использование виджета ориентированы на людей, мало разбирающихся в ГИС. Таким образом, его использование довольно легко понять, даже если вас пугают технические термины, используемые в ГИС.

Marble предлагает несколько интерфейсов для программирования:

Вы можете либо создать свои собственные плагины Marble и раскрасить их, либо создать подкласс элемента управления MarbleWidget. Для простого приложения HelloWorld см .:

http://techbase.kde.org/Projects/Marble/MarbleCPlusPlus

Другие вопросы по теме