Android
Data objects
GeoPoint-Abfragen in Android mit Parse und Back4App
9 min
geoabfragen einführung in diesem leitfaden lernen sie, wie sie geopoint abfragen auf parse in einer android anwendung durchführen dieses tutorial verwendet eine app, die in android studio arctic fox 2020 3 1 mit compilesdk = 30 compilesdk = 30 , minsdk = 23 minsdk = 23 und targetsdk = 30 targetsdk = 30 jederzeit können sie auf das vollständige android projekt zugreifen, das mit diesem tutorial in unseren github repositories erstellt wurde kotlin beispiel repository java beispiel repository ziel führen sie geoabfragen mit geopunkten durch, die auf back4app und der android geolokalisierung gespeichert sind hier ist eine vorschau dessen, was wir erreichen werden voraussetzungen um dieses tutorial abzuschließen, benötigen wir android studio eine app, die auf back4app erstellt wurde hinweis befolgen sie das tutorial für neue parse apps , um zu lernen, wie man eine parse app auf back4app erstellt eine android app, die mit back4app verbunden ist hinweis befolgen sie das tutorial zur installation des parse sdk , um ein android studio projekt zu erstellen, das mit back4app verbunden ist ein gerät (oder virtuelles gerät ) mit android 4 1 (jelly bean) oder neuer lass uns anfangen! bevor wir mit den nächsten schritten fortfahren, müssen wir back4app back4app mit unserer anwendung verbinden sie sollten die appid appid und clientkey clientkey von back4app back4app in die string xml string xml datei einfügen und dann parse parse in unserer app java app java oder app kt app kt datei initialisieren folgen sie dem neuen parse app tutorial wenn sie nicht wissen, wie sie parse parse in ihrer app initialisieren oder sie können die projekte herunterladen, deren github links wir oben geteilt haben, und nur die appid appid und clientkey clientkey teile nach ihren wünschen bearbeiten 1 speichern sie einige daten auf back4app in diesem schritt werden wir eine klasse mit der js konsole und den von parse parse bereitgestellten javascript codes erstellen und wir werden abfragen für diese klasse erstellen lass uns eine stadt stadt klasse erstellen, die das ziel unserer abfragen in diesem leitfaden sein wird in der parse js konsole ist es möglich, javascript code direkt auszuführen, um den inhalt deiner anwendungsdatenbank mit den js sdk befehlen abzufragen und zu aktualisieren führe den folgenden code aus deiner js konsole aus und füge die daten in back4app ein so sieht die js konsole in deinem dashboard aus lege die stadt stadt klasse mit folgendem beispielinhalt an 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 abfrage der daten aus der android app jetzt, da du eine befüllte klasse hast, können wir einige geopoint abfragen darin durchführen lass uns beginnen, indem wir die stadt stadt ergebnisse nach den nächstgelegenen von kingston in jamaika (breitengrad 18 01808695059913 und längengrad 76 79894232253473) sortieren, indem wir die parsequery wherenear parsequery wherenear methode verwenden 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 } lass uns jetzt die methode parsequery wherewithinkilometers parsequery wherewithinkilometers , die alle ergebnisse abruft, deren geopoint feld sich innerhalb der maximalen entfernung befindet, verwenden kingston wird erneut als referenz verwendet und die entfernungsgrenze beträgt 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 } eine weitere nützliche abfragemethode ist parsequery wherewithinpolygon parsequery wherewithinpolygon , die ergebnisse abfragt, deren geopoint feldwert innerhalb des angegebenen polygons liegt, das aus einem array von geopoints (mindestens drei) besteht wenn der polygonpfad offen ist, wird er automatisch von parse geschlossen, indem die letzten und ersten punkte verbunden werden für dieses beispiel verwenden sie ein einfaches polygon, das grob den südamerikanischen kontinent umfasst, bestehend aus 5 weit auseinanderliegenden geopoints im ozean 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 } es ist erledigt! am ende dieses leitfadens haben sie gelernt, wie geopoint datenabfragen in parse funktionieren und wie sie diese von einer android app aus auf back4app durchführen im nächsten leitfaden werden sie überprüfen, wie sie benutzer in parse erstellen und verwalten