Bienvenue sur le forum !

Si vous souhaitez rejoindre la communauté, cliquez sur l'un de ces boutons !

Qt : 5.11.2 - Qt Creator : 4.7.1 - Qt Installer : 3.0.4 - JOM : 1.1.2 - QBS : 1.12.1

QT Intégrer tableau de coordonnées GPS sur map QML

30 Aug modifié dans Qt / Langage C++
Bonjour à tous,

Je travail en ce moment sur un petit projet de positionnement par GPS.
J'ai développé un programme en c++ en me basant sur une image et je converti mes coordonnées GPS en pixel afin de les placer au bon endroit. Cette partie fonctionne parfaitement.

Je souhaiterai maintenant améliorer ce système en changeant cette image par une carte de type Open Street Map. Pour cela la seule solution que j'ai trouvé est d'utiliser du QML.
Je réussi parfaitement à faire afficher et bouger un point seul définit en static dans mon code c++ et dans mon qml.
Cependant, je n'arrive pas a faire de même avec un tableau dynamique je veux pouvoir avoir 2 points comme 10 points sans modifier mon code).
Je récupère parfaitement les données en qml (j'affiche sans problème en texte les informations), mais impossible d'afficher des points sur la map.

Avez-vous déjà essayé de faire quelque chose de ce genre ?

Merci d'avance


Réponses

  • Salut,

    Regarde l'exemple mapviewer dans QtDir\Examples\Qt-5.11.1\location
    Tu auras déjà le code pour ajouter dynamiquement des marqueurs (click bouton gauche souris de 2 sec).
    Ensuite pour le tableau, je ne suis pas compétent en pur qml donc en c++ je ferai :
    1) Une classe qui hérite de QTableModel
    2) en qml positionner une TableView et lui donner le modèle.
    3) créer une méthode invokable pour ajouter les marqueurs au modèle.

    La doc doc.qt.io/qt-5/qtquick-modelviewsdata-cppmodels.html montre comment faire

  • Salut, merci de ta réponse.
    J'ai commencé à regarder. Effectivement ça doit pouvoir le faire.
    Par contre j'ai aucune notion de qml, et là c'est quand même un gros bloc !!

    Mes marqueurs viennent se rajouter dans le c++ et non pas via interaction qml. Donc normalement j'ai pas besoin de ta partie 3 si ?
  • Re,

    la partir 3) peut en effet être retirer mais :
    si c'est le c++ qui ajoute des points au modèle, il te faudra un signal pour que le qml ajoute les markers à la Tableview ainsi que sur la map.
  • En fait j'arrive à afficher en texte mes points gps dans le qml. Donc la liaison entre le c++ et qml est ok.
    Mais je n'arrive pas à comprendre le fonctionnement du QML et donc d'utiliser les données correctement pour intégrer les points dans la carte...
  • 17 Jul modifié
    Pour ajouter un marker à la carte dans MapComponent.qml ils font :

    function addMarker()
    {
    var count = map.markers.length
    markerCounter++
    var marker = Qt.createQmlObject ('Marker {}', map)
    map.addMapItem(marker)
    marker.z = map.z+1
    marker.coordinate = mouseArea.lastCoordinate

    //update list of markers
    var myArray = new Array()
    for (var i = 0; i<count; i++){
    myArray.push(markers[i])
    }
    myArray.push(marker)
    markers = myArray
    }
    Dans ton cas, il ne faudra pas prendre les coordonnées de la souris mais celles de la nouvelle ligne ajouter au modèle.
  • Merci pour ton aide. j'arrive a utiliser cette fonction dans mon code maintenant.
    Maintenant il me faut pouvoir l'appeler en utilisant les données que fourni le c++.
    J'ai un code qui récupère ces données et me les affichent en texte que voici. Le problème c'est que je ne comprend pas comment il fonctionne exactement et que je n'arrive pas non plus à le modifier de façon à appeler la fonction "addMarker".

    Si tu as une idée je suis preneur...

    Voilà le code en question :
    JPG
    JPG
    Capture.JPG
    101K
Connectez-vous ou Inscrivez-vous pour répondre.