Как добавить Карты 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.