Android
Data objects
Consultas GeoPoint en Parse para Apps Android: Guía Completa
9 min
geoqueries introducción en esta guía, aprenderás cómo realizar consultas de geopoint en parse en una aplicación de android este tutorial utiliza una aplicación creada en android studio arctic fox 2020 3 1 con compilesdk = 30 compilesdk = 30 , minsdk = 23 minsdk = 23 y targetsdk = 30 targetsdk = 30 en cualquier momento, puedes acceder al proyecto android completo construido con este tutorial en nuestros repositorios de github repositorio de ejemplo en kotlin repositorio de ejemplo en java objetivo realizar geoqueries utilizando geopuntos almacenados en back4app y geolocalización de android aquí hay una vista previa de lo que vamos a lograr requisitos previos para completar este tutorial, necesitamos android studio una aplicación creada en back4app nota sigue el tutorial de nueva aplicación parse para aprender cómo crear una aplicación parse en back4app una aplicación de android conectada a back4app nota sigue el tutorial de instalación del sdk de parse para crear un proyecto de android studio conectado a back4app un dispositivo (o dispositivo virtual ) que ejecute android 4 1 (jelly bean) o superior ¡comencemos! antes de los siguientes pasos, necesitamos conectar back4app back4app a nuestra aplicación debes guardar el appid appid y clientkey clientkey de back4app back4app al archivo string xml string xml y luego inicializa parse parse en nuestro app java app java o app kt app kt archivo sigue el nuevo tutorial de parse app si no sabes cómo inicializar parse parse en tu aplicación o puedes descargar los proyectos que compartimos en los enlaces de github arriba y editar solo las partes de appid appid y clientkey clientkey de acuerdo a ti 1 guarda algunos datos en back4app en este paso, crearemos una clase con la consola js y los códigos javascript proporcionados por parse parse y crearemos consultas para esta clase creemos una ciudad ciudad , que será el objetivo de nuestras consultas en esta guía en la consola js de parse es posible ejecutar código javascript directamente, consultando y actualizando el contenido de la base de datos de tu aplicación utilizando los comandos del sdk de js ejecuta el código a continuación desde tu consola js e inserta los datos en back4app así es como se ve la consola js en tu panel adelante y crea la ciudad ciudad clase con el siguiente contenido de ejemplo 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 consultar los datos desde la aplicación de android ahora que tienes una clase poblada, podemos realizar algunas consultas de geopoint en ella comencemos ordenando los resultados de ciudad ciudad por los más cercanos a kingston en jamaica (latitud 18 01808695059913 y longitud 76 79894232253473), utilizando el método parsequery wherenear parsequery wherenear 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 } ahora consultemos usando el método parsequery wherewithinkilometers parsequery wherewithinkilometers , que recuperará todos los resultados cuyo campo geopoint se encuentre dentro de la distancia máxima kingston se utilizará una vez más como referencia y el límite de distancia será 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 } otro método de consulta útil es parsequery wherewithinpolygon parsequery wherewithinpolygon , que consultará resultados cuyo valor de campo geopoint esté dentro del polígono especificado, compuesto por un arreglo de geopoints (al menos tres) si el camino del polígono está abierto, se cerrará automáticamente por parse conectando los últimos y primeros puntos para este ejemplo, utilizarás un polígono simple que contiene aproximadamente el continente sudamericano, compuesto por 5 geopoints distantes en el océano 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 } ¡está hecho! al final de esta guía, aprendiste cómo funcionan las consultas de datos geopoint en parse y cómo realizarlas en back4app desde una aplicación de android en la próxima guía, verás cómo crear y gestionar usuarios en parse