Как добавить Карты Google в мое приложение в Qt?
Я разрабатываю приложение, в котором мне нужно добавить карту Google в наше приложение. Я использую Qt с дизайном пользовательского интерфейса, и я не использую QML. Есть ли API для Qt для symbian или любого файла, который будет добавлен в порт в моем приложении?
Ответы
Ответ 1
-Qt API для Карт Google -
От: http://www.ics.com/technologies/qt_google_apis
-
QML и Qt Карты Google: http://code.google.com/p/qt-google-maps/wiki/About
API-функции, используемые в этом проекте:
- Создание и настройка карты.
- Создание меток (маркеров)
- Перейти к отметке
-
Qt Google Адреса: http://code.google.com/p/qt-google-places/wiki/About
API-функции, используемые в этом проекте:
- Создание и настройка карты.
- Адрес для автозаполнения
- Получить координаты по адресу
- Поиск мест по имени, типу и местоположению
- Получить информацию о месте.
- Добавить место пользователя
- Удалить место пользователя
- Добавить новое событие
- Удалить событие
-
QML и Qt Google Локатор: http://code.google.com/p/qt-google-latitude/wiki/About
API-функции, используемые в этом проекте:
- Создание и настройка карты.
- Создание меток (маркеров)
- Получить текущее местоположение
- Вставить текущее местоположение
- Получить историю местоположения
- Вставить в историю местоположения
- Отправить адрес
Ответ 2
QWebView *webView = new QWebView(parentWidget);
webView->resize(1000,500);
webView->move(10,10);
QString gMapURL = "England"; // this is where you want to point
gMapURL = "http://maps.google.com.sg/maps?q="+gMapURL+"&oe=utf-8&rls=org.mozilla:en-US:official&client=firefox-a&um=1&ie=UTF-8&hl=en&sa=N&tab=wl";
webView->setUrl(QUrl(gMapURL));
Это своего рода дешевый способ получить карту google в Qt. Возможно, есть более разумный способ получить его с помощью веб-служб Google Maps API.
http://code.google.com/apis/maps/documentation/webservices/index.html
Ответ 3
Я работаю над своим университетским проектом в Qt, используя Google Maps в качестве главного виджета. В принципе, лучше всего загрузить внешний HTML файл в QWebView
, который содержит код javascript, необходимый для загрузки карты. Эта практика позволяет вам определять функции javascript внутри HTML файла, который может управлять картой (маркерами и т.д.), Которую вы можете легко вызвать в своем Qt-коде.
Однако есть один улов. Когда вы загружаете карту в свой виджет QWebView, вы не сможете взаимодействовать с ним вообще. Чтобы избавиться от этой проблемы, вам нужно создать класс, который наследует QWebPage, который подделывает пользовательский агент, например:
class myWebPage : virtual public QWebPage
{
virtual QString userAgentForUrl(const QUrl& url) const
{
return "Chrome/1.0";
}
};
Вам нужно будет создать класс, который наследует QWebView
и устанавливает главную страницу этого класса в новый экземпляр класса myWebPage
.
Следующий шаг - добавить виджет QWebView
в свой конструктор. Продвигайте этот виджет в свой собственный класс QWebView
. После этого вы получите полностью функциональную карту.
Ответ 4
Использование QWebView, вероятно, будет работать, но я понятия не имею, возможно ли взаимодействие между Картами Google и вашим собственным кодом.
Мой проект основан на коде qt-google-maps
. Вы все еще можете найти его в Архиве Google Code:
Я помню, что мне пришлось немного изменить, потому что код был основан на версии 2 API Карт Google, и теперь поддерживалась только версия 3. Но даже это было довольно легко. Я вижу, что "новый" код теперь включает и версию 3.
В GitHub я также нашел проект который использует код, но сделал QT5-версию и был активен до одного года назад, так что, вероятно, у вас больше шансов найти там рабочий код.
На моем личном GitHub я решил продолжить использование QT4, и взаимодействие с Google Maps работает довольно хорошо. Вот последняя версия, но код, вероятно, немного грязный и непонятный из-за нехватки времени для работы над ним более подробно (извините за это), поэтому лучше начать из этого коммита. Он имеет базовую версию qt-google-карт с 2012 года, обновленную мной для Google Maps APIv3 (так что будут некоторые отличия от первой ссылки, которую я разместил здесь), и не слишком много моего личного кода.
Убедитесь, что вы прочитали инструкции .
Ответ 5
У меня очень маленький проект (https://github.com/skhaz/qtgps), который использует Google Maps в qwebview и некоторый javascript для взаимодействия
Ответ 6
Если вы можете использовать других поставщиков карт, теперь есть QtLocation модуль (в настоящее время Техническое представление на момент написания для Qt 5.5) который может отображать ЗДЕСЬ, карты Mapbox и OpenStreetMap, а также вы можете создать свой собственный плагин для других поставщиков.
Хотя, к сожалению, Google Maps не поддерживается и выглядит как вообще не произойдет из-за Условий использования Карт Google.