iOS
...
Parse Swift SDK
Data Objects

Optimisation des Geoqueries avec ParseSwift SDK pour iOS

9min

Geoqueries

Introduction

Nous utilisons le terme Geoqueries pour désigner le type de requêtes dont les conditions impliquent des champs de type ParseGeoPoint. Il est recommandé d'utiliser la structure ParseGeoPoint pour stocker des données de localisation géographique dans une base de données Back4App. Le ParseSwift SDK fournit un ensemble de méthodes qui nous permet de requêter des données selon des conditions appliquées sur des données de type ParseGeoPoint.

Prérequis

Pour compléter ce tutoriel, vous aurez besoin de :

Objectif

Comprendre comment requêter des données en utilisant des conditions sur des données de localisation géographique.

1 - Revue rapide sur la Query<U> classe

Toute requête effectuée sur une base de données Back4App se fait via la classe générique Query<U>. Le paramètre générique U (conforme au ParseObject protocole) est le type de données des objets que nous essayons de récupérer de la base de données.

Étant donné un type de données comme MyObject, nous récupérons ces objets d'une base de données Back4App de la manière suivante

Swift


Vous pouvez en savoir plus sur la Query<U> classe ici dans la documentation officielle.

2 - Enregistrer des données sur Back4App

Avant de commencer à exécuter des requêtes, nous devrions stocker quelques données d'exemple sur une base de données Back4App. En suivant le guide de démarrage rapide, vous pouvez configurer et lier votre application iOS d'exemple à votre base de données Back4App. Pour ce guide, nous allons stocker des informations sur les villes. Nous utilisons la structure suivante pour organiser les informations d'une ville :

Swift


Maintenant, nous procédons à stocker les données d'échantillon. Cette étape peut être mise en œuvre en utilisant Swift ou directement depuis la console sur la plateforme Back4App.

Swift
Back4App's console


3 - Interroger les données

Trier les résultats

Avec les données d'exemple sauvegardées, nous pouvons commencer à effectuer différents types de requêtes.

Pour notre premier exemple, nous allons sélectionner toutes les villes et les trier en fonction de leur distance par rapport à un point géographique de référence. Nous mettons en œuvre cette requête en passant une contrainte à l' Query<City> objet. La méthode near(key:geoPoint:) disponible via le ParseSwift SDK nous permet de construire une telle contrainte. Comme arguments, nous passons le nom du champ (généralement appelé key) contenant le geoPoint de référence.

Swift


Sélectionner des résultats dans une région donnée

Supposons que nous voulons sélectionner des villes dans une certaine région. Nous pouvons y parvenir avec une contrainte créée par la méthode withinKilometers(key:geoPoint:distance:). En arguments, nous passons le nom du champ contenant la localisation de la ville, le centre de la région (un ParseGeoPoint de type de données) et la distance maximale (en km) qu'une ville peut être de ce centre de région. Pour sélectionner toutes les villes qui sont à au plus 3000km de Kingston - Jamaïque, nous pouvons le faire de la manière suivante

Swift


De plus, lorsque la distance est donnée en miles au lieu de kilomètres, nous pouvons utiliser le withinMiles(key:geoPoint:distance:sorted:) méthode.

Une méthode moins courante, withinRadians(key:geoPoint:distance:sorted:), est également disponible si la distance est donnée en radians. Son utilisation est très similaire aux méthodes précédentes.

Sélectionner des résultats dans un polygone donné

Dans l'exemple précédent, nous avons sélectionné des villes dans une région représentée par une région circulaire. Dans le cas où nous devons avoir une forme non circulaire pour la région, le ParseSwift SDK nous permet de construire de telles régions à partir de leurs sommets.

Maintenant, l'objectif de cet exemple est de sélectionner des villes à l'intérieur d'un polygone à cinq sommets. Ces sommets sont exprimés en utilisant le ParseGeoPoint struct. Une fois que nous avons créé les sommets, nous instancions un ParsePolygon. Ce polygone est ensuite passé à la withinPolygon(key:polygon:) méthode (fournie par le ParseSwift SDK) pour construire la contrainte qui nous permettra de sélectionner des villes à l'intérieur de ce polygone.

Swift


Conclusion

De nos jours, effectuer des opérations sur des données de localisation pour offrir des services personnalisés est très important. Back4App, avec le ParseSwift SDK facilite la mise en œuvre de ce type d'opérations.