Carte des lieux (QML)
L'exemple de carte des lieux montre comment rechercher et afficher une liste de lieux sur une carte à l'aide de MapItemView.

L'exemple affiche une carte de la position actuelle ou, si aucune position n'est disponible, il utilise Oslo/Norvège. Ensuite, une recherche de lieux correspondant au terme "food" est effectuée et chaque résultat est affiché sur la carte.
Exécution de l'exemple
Pour exécuter l'exemple à partir de Qt CreatorOuvrez le mode Welcome et sélectionnez l'exemple à partir de Examples. Pour plus d'informations, voir Qt Creator: Tutoriel : Construire et exécuter.
Recherche locale
Pour écrire l'application QML qui affichera les lieux sur une carte, nous commençons par faire les déclarations d'importation suivantes.
import QtQuick import QtPositioning import QtLocation
Instanciation d'une instance de Plugin. Le Plugin est en fait le backend à partir duquel les lieux sont sourcés. Selon le plugin choisi, certains paramètres obligatoires peuvent être nécessaires. Dans le cas présent, nous avons choisi le plugin OSM qui n'a pas de paramètres obligatoires.
Plugin { id: myPlugin name: "osm" //specify plugin parameters if necessary //PluginParameter {...} //PluginParameter {...} //... }
Ensuite, nous instançons un site PlaceSearchModel que nous pouvons utiliser pour spécifier les paramètres de recherche et effectuer une opération de recherche de lieux. À des fins d'illustration, update() est invoqué une fois la construction du modèle terminée. En règle générale, update() est invoqué en réponse à une action de l'utilisateur telle qu'un clic sur un bouton.
PlaceSearchModel { id: searchModel plugin: myPlugin searchTerm: "food" searchArea: QtPositioning.circle(positionSource.lastSearchPosition, 1000 /* 1 km radius */) Component.onCompleted: update() }
La carte est affichée en utilisant le type MapView et, à l'intérieur, nous déclarons le type MapItemView et fournissons le modèle de recherche et un délégué. Un délégué en ligne a été utilisé et nous avons supposé que chaque résultat de recherche est de type type PlaceSerachesult . Par conséquent, nous supposons que nous avons toujours accès à l'endroit role, d'autres types de résultats de recherche peuvent ne pas avoir d'endroit role.
MapView { id: view anchors.fill: parent map.plugin: myPlugin; map.center: positionSource.lastSearchPosition map.zoomLevel: 13 MapItemView { model: searchModel parent: view.map delegate: MapQuickItem { coordinate: place.location.coordinate anchorPoint.x: image.width * 0.5 anchorPoint.y: image.height sourceItem: Column { Image { id: image; source: "marker.png" } Text { text: title; font.bold: true } } } } }
Enfin, un site PositionSource est utilisé pour réinitialiser la carte à l'emplacement actuel et trouver des lieux "alimentaires" dans la nouvelle zone. Les informations relatives à la position sont mises à jour toutes les 2 minutes et si la nouvelle position est éloignée de plus de 500 mètres de la dernière zone de recherche de nourriture, la recherche de lieux est redéclenchée.
PositionSource { id: positionSource property variant lastSearchPosition: QtPositioning.coordinate(59.93, 10.76) //Initialized/Fallback to Oslo active: true updateInterval: 120000 // 2 mins onPositionChanged: { var distance = lastSearchPosition.distanceTo(position.coordinate) if (distance > 500) { // 500m from last performed food search lastSearchPosition = positionSource.position.coordinate } } }
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.