2011-12-15 5 views
14

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

+0

Я не уверен. Возможно, вы можете использовать QWebView. –

+0

хотел бы рассказать мне больше, пожалуйста., Lwin Htoo Ko – Naufal

ответ

3
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

+0

Привет, я получаю местоположение и адрес из разобранного значения. когда я нажимаю кнопку карты, мне нужно показать это местоположение на карте! Возможно ли это в Qt для Symbian ??? может кто-нибудь помочь мне с API, портирование в проект – Naufal

+0

FYI http://www.developer.nokia.com/Community/Wiki/How_to_show_city_locations_in_a_map_using_Qt_and_Google_Maps_API HTTP: // док .qt.nokia.com/qtmobility-1.1-tp/fetchgooglemaps.html –

+1

HI есть ли почтовый индекс для этого !!! Я попробую этот код сейчас. Lwin Htoo Ko – Naufal

0

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

+0

Привет, Skhaz спасибо за ваши ответы .. Я постараюсь и дам вам знать в sometime ... :) – Naufal

+1

Я пробовал ваш проект, но всегда segfaults при загрузке веб-страницы. Это даже segfaults, если я перейду в Интернет с Google Maps на Google. –

2

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

8

-qt API для Google карты-
От: http://www.ics.com/technologies/qt_google_apis

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

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

    • Cre поел и настройка карты
    • Создание меткам (маркеры)
    • Goto метка
  • Qt Google Места: http://code.google.com/p/qt-google-places/wiki/About

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

    • Создание и настройка карты
    • автозаполнения адресный поиск
    • Получить координаты по адресу
    • Поиск места по названию, типу и местоположению
    • Получить информацию о месте
    • Добавить новое место пользователя
    • Удаление пользователя место
    • Добавить новое событие
    • Устранение неполадок
  • QML & Qt Google Latitude: http://code.google.com/p/qt-google-latitude/wiki/About

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

    • Создание и настройка карты
    • Создать метки (маркеры)
    • Получить текущее местоположение
    • Вставить текущее местоположение
    • Получить историю местоположения ион
    • Вставить в историю местоположения
    • Goto адрес
0

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

Хотя, к сожалению, Google Maps не поддерживается и выглядит как it's not going to happen вообще из-за Условий использования Google Maps & Условия.

1

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

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

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

On GitHub Я также нашел project that uses the code, but made a QT5-version, и он был активным до года назад, так что, возможно, у вас больше шансов найти там рабочий код.

На моем личном GitHub я решил продолжить использование QT4, и взаимодействие с Google Maps работает довольно хорошо. Here is the latest version, но код, вероятно, немного грязный и непонятный из-за нехватки времени для работы над ним более подробно (извините за это), поэтому лучше всего начать from this commit. Он имеет базовую версию qt-google-карт с 2012 года, обновленную мной для Google Maps APIv3 (так что будут некоторые отличия от первой ссылки, которую я разместил здесь), и не слишком много моего личного кода.

Убедитесь, что вы прочитали compile instructions.

Смежные вопросы