Как добавить Google Maps в мое приложение в Qt? - PullRequest
15 голосов
/ 15 декабря 2011

Я разрабатываю приложение, в котором мне нужно добавить карту Google в наше приложение. Я использую Qt с дизайном пользовательского интерфейса, и я не использую QML. Есть ли какой-нибудь API для Qt для symbian или какой-либо файл, добавляемый в порт в мое приложение?

Ответы [ 6 ]

9 голосов
/ 28 июня 2012

-Qt API для Google Maps-
От: https://www.ics.com/technologies/qt/qt-based-clients-google-apis

  • QML & Qt Google Maps: http://code.google.com/p/qt-google-maps/wiki/About

    Функции API, используемые в этом проекте:

    • Создание и настройка карты
    • Создание меток (маркеров)
    • Перейти к метке
  • Qt Google Places: 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, используемые в этом проекте:

    • Создание и настройка карты
    • Создание меток (маркеров)
    • Получить текущийlocation
    • Вставить текущее местоположение
    • Получить историю местоположения
    • Вставить в историю местоположения
    • Перейти к адресу
3 голосов
/ 15 декабря 2011
    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. Возможно, есть какой-то более умный способ получить его с помощью веб-служб API Карт Google. http://code.google.com/apis/maps/documentation/webservices/index.html

2 голосов
/ 30 мая 2012

Я работал над своим университетским проектом в 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. После этого у вас будет полнофункциональная карта.

1 голос
/ 02 августа 2016

Использование QWebView, возможно, сработает, но я понятия не имею, может ли тогда произойти взаимодействие между Google Maps и вашим собственным кодом.

Мой проект основан на коде qt-google-maps.Вы все еще можете найти его в Google Code Archive:

Я помню, что мне пришлось немного измениться, потому что код был основан на версии 2 API Карт Google, и теперь поддерживалась только версия 3.Но даже это было довольно легко.Я вижу, что «новый» код теперь включает и версию 3.

На GitHub я также нашел проект , который использует код, но сделал его из QT5-версии , и он имеетЯ был активен до года назад, поэтому, вероятно, у вас больше шансов найти там рабочий код.

На моем личном GitHub я решил продолжить использовать QT4, и взаимодействие с Google Maps работает довольно хорошо. Вот последняя версия , но код, вероятно, немного запутанный и непонятный из-за нехватки времени, чтобы работать над ним более подробно (извините за это), поэтому лучше всего начинать с этого коммита.Он имеет базовую версию qt-google-maps 2012 года, обновленную мной для API Карт Google версии 3 (поэтому с первой ссылкой, которую я разместил здесь, будут некоторые различия), и в нем не так уж много моего личного кода.

Обязательно прочитайте инструкции по компиляции .

0 голосов
/ 11 декабря 2015

Если бы вы могли использовать других провайдеров карт, то теперь есть модуль QtLocation (в настоящее время Техническое описание на момент написания для Qt 5.5), который может отображать карты HERE, Mapbox и OpenStreetMap, а также вы можете создавать ваш собственный плагин для других провайдеров.

Хотя, к сожалению, Google Maps не поддерживается и выглядит как , этого вообще не произойдет из-за Положений и условий Карт Google.

0 голосов
/ 23 декабря 2011

У меня очень маленький проект (https://github.com/skhaz/qtgps), который использует Google Maps в qwebview и некоторый JavaScript для взаимодействия

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