Requêtes GeoPoint Android avec Parse pour développeurs
9 min
géocritères introduction dans ce guide, vous apprendrez comment effectuer des requêtes geopoint sur parse dans une application android ce tutoriel utilise une application créée dans android studio arctic fox 2020 3 1 avec \<font color="#2166ae">compilesdk = 30\</font> , \<font color="#2166ae">minsdk = 23\</font> et \<font color="#2166ae">targetsdk = 30\</font> à tout moment, vous pouvez accéder au projet android complet construit avec ce tutoriel sur nos dépôts github dépôt d'exemple kotlin https //github com/templates back4app/android parse sdk kotlin dépôt d'exemple java https //github com/templates back4app/android parse sdk java objectif effectuer des géocritères en utilisant des géopoints stockés sur back4app et la géolocalisation android voici un aperçu de ce que nous allons réaliser conditions préalables pour compléter ce tutoriel, nous avons besoin de android studio https //developer android com/studio/index html une application créée sur back4app remarque suivez le tutoriel de nouvelle application parse https //www back4app com/docs/get started/new parse app pour apprendre à créer une application parse sur back4app une application android connectée à back4app remarque suivez le tutoriel d'installation du sdk parse https //www back4app com/docs/android/parse android sdk pour créer un projet android studio connecté à back4app un appareil (ou appareil virtuel https //developer android com/studio/run/managing avds html ) fonctionnant sous android 4 1 (jelly bean) ou version ultérieure commençons! avant les prochaines étapes, nous devons connecter \<font color="#2166ae">back4app\</font> à notre application vous devez enregistrer le \<font color="#2166ae">appid\</font> et \<font color="#2166ae">clientkey\</font> de \<font color="#2166ae">back4app\</font> dans le fichier \<font color="#2166ae">string xml\</font> et ensuite init \<font color="#2166ae">parse\</font> dans notre \<font color="#2166ae">app java\</font> ou \<font color="#2166ae">app kt\</font> fichier suivez le nouveau tutoriel d'application parse https //www back4app com/docs/android/parse android sdk si vous ne savez pas comment init \<font color="#2166ae">parse\</font> dans votre application ou vous pouvez télécharger les projets dont nous avons partagé les liens github ci dessus et modifier uniquement les \<font color="#2166ae">appid\</font> et \<font color="#2166ae">clientkey\</font> selon vos besoins 1 enregistrer des données sur back4app dans cette étape, nous allons créer une classe avec la console js et les codes javascript fournis par \<font color="#2166ae">parse\</font> et nous allons créer des requêtes pour cette classe créons une \<font color="#2166ae">ville\</font> , qui sera la cible de nos requêtes dans ce guide sur la console js de parse, il est possible d'exécuter du code javascript directement, en interrogeant et en mettant à jour le contenu de votre base de données d'application à l'aide des commandes du sdk js exécutez le code ci dessous depuis votre console js et insérez les données sur back4app voici à quoi ressemble la console js dans votre tableau de bord allez y et créez la \<font color="#2166ae">ville\</font> avec le contenu d'exemple suivant 1 // add city objects and create table 2 // note how geopoints are created, passing latitude and longitude as arguments 3 // montevideo 4 city = new parse object('city'); 5 city set('name', 'montevideo uruguay'); 6 city set('location', new parse geopoint( 34 85553195363169, 56 207280375137955)); 7 await city save(); 8 9 // brasília 10 city = new parse object('city'); 11 city set('name', 'brasília brazil'); 12 city set('location', new parse geopoint( 15 79485821477289, 47 88391074690196)); 13 await city save(); 14 15 // bogotá 16 city = new parse object('city'); 17 city set('name', 'bogotá colombia'); 18 city set('location', new parse geopoint(4 69139880891712, 74 06936691331047)); 19 await city save(); 20 21 // mexico city 22 city = new parse object('city'); 23 city set('name', 'mexico city mexico'); 24 city set('location', new parse geopoint(19 400977162618933, 99 13311378164776)); 25 await city save(); 26 27 // washington, d c 28 city = new parse object('city'); 29 city set('name', 'washington, d c usa'); 30 city set('location', new parse geopoint(38 930727220189944, 77 04626261880388)); 31 await city save(); 32 33 // ottawa 34 city = new parse object('city'); 35 city set('name', 'ottawa canada'); 36 city set('location', new parse geopoint(45 41102167733425, 75 695414598736)); 37 await city save(); 38 39 console log('success!'); 2 interroger les données depuis l'application android maintenant que vous avez une classe peuplée, nous pouvons maintenant effectuer quelques requêtes geopoint dessus commençons par ordonner les résultats de la \<font color="#2166ae">ville\</font> par la plus proche de kingston en jamaïque (latitude 18 01808695059913 et longitude 76 79894232253473), en utilisant la méthode \<font color="#2166ae">parsequery wherenear\</font> 1 parsequery\<parseobject> query = new parsequery<>("city"); 2 query wherenear("location",new parsegeopoint(18 018086, 76 798942)); 3 query findinbackground((objects, e) > { 4 if (e==null){ 5 initdata(objects); 6 } else { 7 toast maketext(mainactivity this, e getlocalizedmessage(), toast length short) show(); 8 } 9 });1 val query = parsequery\<parseobject>("city") 2 query wherenear("location", parsegeopoint(18 018086, 76 798942)) 3 query findinbackground { objects list\<parseobject>?, e parseexception? > 4 if (e == null) { 5 initdata(objects!!) 6 } else { 7 toast maketext(this\@mainactivity, e localizedmessage, toast length short) 8 show() 9 } 1 0 } interrogeons maintenant en utilisant la méthode \<font color="#2166ae">parsequery wherewithinkilometers\</font> , qui récupérera tous les résultats dont le champ geopoint est situé dans la distance maximale kingston sera utilisé une fois de plus comme référence et la limite de distance sera de 3000 km 1 parsequery\<parseobject> query = new parsequery<>("city"); 2 query wherewithinkilometers("location",new parsegeopoint(18 018086, 76 798942),3000); 3 query findinbackground((objects, e) > { 4 if (e==null){ 5 initdata(objects); 6 } else { 7 toast maketext(mainactivity this, e getlocalizedmessage(), toast length short) show(); 8 } 9 });1 val query = parsequery\<parseobject>("city") 2 query wherewithinkilometers( 3 "location", 4 parsegeopoint(18 018086, 76 798942), 5 3000 0 6 ) 7 query findinbackground { objects list\<parseobject>?, e parseexception? > 8 if (e == null) { 9 initdata(objects!!) 10 } else { 11 toast maketext(this\@mainactivity, e localizedmessage, toast length short) 12 show() 13 } 14 } une autre méthode de requête utile est \<font color="#2166ae">parsequery wherewithinpolygon\</font> , qui interrogera les résultats dont la valeur du champ geopoint est à l'intérieur du polygone spécifié, composé d'un tableau de geopoints (au moins trois) si le chemin du polygone est ouvert, il sera automatiquement fermé par parse en reliant les derniers et premiers points pour cet exemple, vous utiliserez un simple polygone qui contient à peu près le continent sud américain, composé de 5 geopoints éloignés dans l'océan 1 parsequery\<parseobject> query = new parsequery<>("city"); 2 3 parsegeopoint geopoint1 = new parsegeopoint(15 822238344514378, 72 42845934415942); 4 parsegeopoint geopoint2 = new parsegeopoint( 0 7433770196268968, 97 44765968406668); 5 parsegeopoint geopoint3 = new parsegeopoint( 59 997149373299166, 76 52969196322749); 6 parsegeopoint geopoint4 = new parsegeopoint( 9 488786415007201, 18 346101586021952); 7 parsegeopoint geopoint5 = new parsegeopoint(15 414859532811047, 60 00625459569375); 8 parsegeopoint geopoint6 = new parsegeopoint(41 015137, 28 97953); 9 10 list\<parsegeopoint> list = new arraylist<>(); 11 list add(geopoint1); 12 list add(geopoint2); 13 list add(geopoint3); 14 list add(geopoint4); 15 list add(geopoint5); 16 list add(geopoint6); 17 query wherewithinpolygon("location",list); 18 19 query findinbackground((objects, e) > { 20 if (e==null){ 21 initdata(objects); 22 } else { 23 toast maketext(mainactivity this, e getlocalizedmessage(), toast length short) show(); 24 } 25 });1 val query = parsequery\<parseobject>("city") 2 val geopoint1 = parsegeopoint(15 822238344514378, 72 42845934415942) 3 val geopoint2 = parsegeopoint( 0 7433770196268968, 97 44765968406668) 4 val geopoint3 = parsegeopoint( 59 997149373299166, 76 52969196322749) 5 val geopoint4 = parsegeopoint( 9 488786415007201, 18 346101586021952) 6 val geopoint5 = parsegeopoint(15 414859532811047, 60 00625459569375) 7 val geopoint6 = parsegeopoint(41 015137, 28 97953) 8 val list mutablelist\<parsegeopoint> = 9 arraylist() 10 list add(geopoint1) 11 list add(geopoint2) 12 list add(geopoint3) 13 list add(geopoint4) 14 list add(geopoint5) 15 list add(geopoint6) 16 query wherewithinpolygon("location", list) 17 query findinbackground { objects list\<parseobject>?, e parseexception? > 18 if (e == null) { 19 initdata(objects!!) 20 } else { 21 toast maketext(this\@mainactivity, e localizedmessage, toast length short) 22 show() 23 } 24 } c'est fait! à la fin de ce guide, vous avez appris comment fonctionnent les requêtes de données geopoint sur parse et comment les effectuer sur back4app depuis une application android dans le prochain guide, vous verrez comment créer et gérer des utilisateurs dans parse