web-dev-qa-db-fra.com

Comment ajouter Google Maps dans mon application sous Qt?

Je développe une application dans laquelle j'ai besoin d'ajouter Google Map à notre application. J'utilise Qt avec la conception d'interface utilisateur et je n'utilise pas QML. Existe-t-il une API pour Qt pour symbian ou un fichier à ajouter au port dans mon application?

15
Naufal

-Qt API pour Google Maps-
De: https://www.ics.com/technologies/qt/qt-based-clients-google-apis

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

    Fonctionnalités d'API utilisées dans ce projet:  

    • Créer et ajuster la carte 
    • Créer des repères (marqueurs) 
    • Aller au repère 
  • Qt Google Adresses: http://code.google.com/p/qt-google-places/wiki/About

    Fonctionnalités de l'API utilisées dans ce projet: 

    • Créer et ajuster la carte 
    • Adresse de recherche à complétion automatique 
    • Obtenir les coordonnées par adresse 
    • Rechercher des lieux par nom, type et emplacement 
    • Obtenir les détails du lieu 
    • Ajouter un nouveau lieu d'utilisateur 
    • Supprimer la place de l'utilisateur 
    • Ajouter un nouvel événement 
    • Supprimer l'événement 
  • QML et Qt Google Latitude: http://code.google.com/p/qt-google-latitude/wiki/About

    Fonctionnalités de l'API utilisées dans ce projet:

    • Créer et ajuster la carte
    • Créer des repères (marqueurs)
    • Obtenir l'emplacement actuel
    • Insérer l'emplacement actuel
    • Obtenir l'historique de l'emplacement
    • Insérer dans l'historique du lieu
    • Aller à l'adresse
9
Aquarius_Girl
    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));

C’est un moyen peu coûteux d’obtenir Google Map en Qt. Il existe peut-être un moyen plus intelligent de l'obtenir à l'aide des services Web de Google Maps API. http://code.google.com/apis/maps/documentation/webservices/index.html

3
Lwin Htoo Ko

J'ai travaillé sur mon projet universitaire avec Qt en utilisant Google Maps comme widget principal. Fondamentalement, il est préférable de charger un fichier HTML externe dans QWebView, qui contient le code javascript nécessaire au chargement de la carte. Cette pratique vous permet de définir des fonctions javascript dans un fichier HTML pouvant contrôler la carte (marqueurs, etc.) que vous pouvez ensuite facilement appeler dans votre code Qt. Lorsque vous chargez la carte dans votre widget QWebView, vous ne pourrez plus interagir avec elle. Pour résoudre ce problème, vous devez créer une classe héritant de QWebPage qui simule l'agent utilisateur, par exemple:

class myWebPage : virtual public QWebPage
{
    virtual QString userAgentForUrl(const QUrl& url) const
    {
        return "Chrome/1.0";
    }
};

Vous devez créer une classe qui hérite de QWebView et définir la page principale de cette classe sur la nouvelle instance de la classe myWebPage. La prochaine étape consiste à ajouter un widget QWebView dans votre Designer. Promouvez ce widget dans votre classe QWebView personnalisée. Vous aurez alors une carte entièrement fonctionnelle.

2
Frexus

Il est probable que l’utilisation de QWebView fonctionne, mais je ne sais pas du tout si une interaction peut avoir lieu entre Google Maps et votre propre code.

Mon projet est basé sur le code qt-google-maps. Vous pouvez toujours le trouver sur Google Code Archive:

Je me souviens que je devais changer un peu parce que le code était basé sur la version 2 de l'API Google Maps et que seule la version 3 était désormais prise en charge. Mais même c'était assez facile. Je vois que le "nouveau" code intègre désormais la version 3 également.

Sur GitHub, j’ai également trouvé un projet qui utilise le code, mais en a fait une version QT5 et qui est actif jusqu’à il ya un an. Vous avez donc probablement plus de chances d’y trouver du code de travail.

Sur mon GitHub personnel, j'ai décidé de continuer à utiliser QT4 et l'interaction avec Google Maps fonctionne plutôt bien. Voici la dernière version , mais le code est probablement un peu brouillon et incompréhensible en raison du manque de temps pour travailler plus en profondeur (désolé pour cela), il est donc préférable de démarrer depuis ce commit . Il contient la version de base de qt-google-maps de 2012, que j'ai mise à jour pour Google Maps APIv3 (il y aura donc quelques différences avec le premier lien que j'ai posté ici), et pas trop de mon code personnel.

Assurez-vous de lire les instructions compiler .

1
Wim

J'ai un très petit projet ( https://github.com/skhaz/qtgps ) qui utilise Google Maps dans une qwebview et du javascript pour interagir

0
Skhaz

Si vous pouviez utiliser d’autres fournisseurs de cartes, il existe maintenant le module QtLocation (actuellement en version technique au moment de la rédaction de Qt 5.5) qui permet de rendre les cartes ICI, Mapbox et OpenStreetMap, et vous pouvez également créer votre propre plugin pour d’autres. fournisseurs.

Malheureusement, Google Maps n'est pas pris en charge et ressemble à cela ne se produira pas du tout en raison des conditions d'utilisation de Google Maps.

0
Vincas Dargis