Android
Data objects
Implementasi Parse GeoPoints di Aplikasi Android
33 mnt
menggunakan parse geopoints di aplikasi android anda pendahuluan parse memungkinkan anda untuk mengaitkan koordinat lintang dan bujur dunia nyata dengan sebuah objek menambahkan a parsegeopoint ke a parseuser , anda akan dapat dengan mudah mengetahui pengguna mana yang terdekat dengan yang lain, menunjukkan lokasi pengguna aplikasi anda dan juga menyimpan informasi lokasi pengguna, di antara kemungkinan lainnya anda juga dapat mengaitkan a parsegeopoint ke sembarang parseobject sebagai contoh, jika aplikasi anda terkait dengan toko dengan afiliasi fisik, anda akan dapat membuat aktivitas untuk menunjukkan lokasi toko toko tersebut atau untuk menunjukkan kepada pengguna toko mana yang terdekat dengannya contoh lain dari penggunaan asosiasi ini jika aplikasi anda adalah sebuah permainan di mana anda membuat parseobjects untuk mewakili karakter, menambahkan parsegeopoints ke karakter karakter ini akan memungkinkan mereka ditampilkan di sepanjang jalur pemain tutorial ini menjelaskan cara menggunakan beberapa fitur dari parsegeopoint melalui back4app setelah mengikuti tutorial ini, anda akan dapat melakukan ini kapan saja, anda dapat mengakses proyek android lengkap yang dibangun dengan tutorial ini di repositori github prasyarat untuk menyelesaikan tutorial ini, kami membutuhkan android studio sebuah aplikasi pendaftaran pengguna login yang dibuat di back4app catatan ikuti tutorial pendaftaran pengguna login untuk belajar cara membuat aplikasi pendaftaran pengguna login di back4app sebuah perangkat nyata yang menjalankan android 4 0 (ice cream sandwich) atau yang lebih baru catatan sangat mungkin bahwa aplikasi yang dibangun dengan tutorial ini tidak akan berjalan seperti yang diharapkan di perangkat virtual dan bahkan mungkin crash karena mungkin tidak dapat mengambil lokasi saat ini dari perangkat virtual jadi kami sangat menyarankan anda menggunakan perangkat nyata untuk menjalankannya 1 siapkan kunci api google untuk menunjukkan lokasi yang anda simpan dalam parsegeopoint, anda perlu menampilkan peta untuk melakukannya, menarik untuk menggunakan aktivitas google maps untuk membuat aktivitas google maps di android studio, lakukan hal berikut pergi ke file file > baru baru > google google > aktivitas google maps aktivitas google maps kemudian, secara otomatis, itu akan membuat sebuah file java file java , sebuah file layout file layout dan sebuah file values file values yang sesuai dengan aktivitas google maps yang telah anda buat pergi ke file values values yang telah dibuat (anda dapat melakukan ini dengan mengakses app app > res res > values values > google maps api xml google maps api xml ), seperti yang ditunjukkan pada gambar di bawah file ini akan memberikan anda beberapa instruksi tentang cara mendapatkan kunci api google maps pada dasarnya, anda harus membuka tautan yang ditunjukkan dalam gambar 3\ setelah membukanya, anda harus masuk ke akun google anda, pilih buat proyek buat proyek opsi dan klik pada lanjutkan lanjutkan saat membuat proyek, google akan mengaktifkan api anda 4\ setelah api anda diaktifkan, anda akan dapat mendapatkan kunci api, untuk melakukannya klik pada 5\ kemudian, kunci anda akan dibuat dan anda dapat menyalinnya dan menempelkannya di nilai nilai file yang mengarahkan anda ke halaman ini, di tempat yang tertulis kunci anda di sini kunci anda di sini 6\ penting untuk memiliki izin penggunaan di bawah ini dalam file androidmanifest xml anda jika anda telah membuat aktivitas google maps mengikuti instruksi di atas, maka salah satu izin ini seharusnya sudah ada di manifest anda, bagaimanapun, anda akan memerlukan keduanya agar aplikasi anda berfungsi dengan baik, jadi periksa apakah mereka ada di file androidmanifest xml anda, jika tidak, masukkan mereka di dalamnya 1 \<uses permission android\ name="android permission access coarse location" /> 2 \<uses permission android\ name="android permission access fine location" /> 7\ di awal mapsactivity mapsactivity , impor yang berikut 1 // android dependencies 2 import android manifest; 3 import android app progressdialog; 4 import android content context; 5 import android content dialoginterface; 6 import android content intent; 7 import android content pm packagemanager; 8 import android location location; 9 import android location locationmanager; 10 import android support annotation nonnull; 11 import android support v4 app activitycompat; 12 import android support v4 app fragmentactivity; 13 import android os bundle; 14 import android util log; 15 import android view\ view; 16 import android widget button; 17 // google maps dependencies 18 import com google android gms maps cameraupdatefactory; 19 import com google android gms maps googlemap; 20 import com google android gms maps onmapreadycallback; 21 import com google android gms maps supportmapfragment; 22 import com google android gms maps model bitmapdescriptorfactory; 23 import com google android gms maps model latlng; 24 import com google android gms maps model markeroptions; 25 // parse dependencies 26 import com parse findcallback; 27 import com parse parseexception; 28 import com parse parsegeopoint; 29 import com parse parsequery; 30 import com parse parseuser; 31 // java dependencies 32 import java util list; 2 siapkan dasbor back4app untuk menyimpan lokasi pengguna pergi ke situs web back4app masuk, temukan aplikasi anda dan buka dasbor nya pergi ke inti inti > peramban peramban > pengguna pengguna , seperti yang ditunjukkan pada gambar di bawah 3\ sekarang, buat kolom baru untuk menyimpan lokasi pengguna untuk melakukannya, klik tombol edit edit di kanan atas, seperti yang ditunjukkan di bawah 4\ kemudian, klik pada tambahkan kolom tambahkan kolom 5\ di kolom apa jenis data yang ingin anda simpan?, pilih opsi geopoint 6\ di kolom apa yang harus kita sebut?, ketik “ lokasi ” 7\ jadi, klik pada tambahkan kolom, seperti yang ditunjukkan pada gambar di bawah 8\ sekarang, aplikasi anda dapat menyimpan data lokasi pengguna dan kelas pengguna anda di dasbor back4pp anda harus terlihat seperti ini 3 simpan lokasi pengguna saat ini di dasbor back4pp anda buka mapsactivity mapsactivity dan di dalam kelas publik mapsactivity mapsactivity definisikan sebuah int yang disebut request location request location dengan nilai 1 dan sebuah locationmanager locationmanager , seperti dalam kode berikut 1 private static final int request location = 1; 2 locationmanager locationmanager; 2\ di dalam oncreate oncreate metode buat locationmanager locationmanager , seperti dalam kode berikut 1 locationmanager = (locationmanager)getsystemservice(context location service); 3\ untuk menyimpan lokasi pengguna di dasbor back4pp anda, cukup terapkan metode berikut dan panggil di onmapready onmapready metode 1 private void savecurrentuserlocation() { 2 // requesting permission to get user's location 3 if(activitycompat checkselfpermission(usersactivity this, manifest permission access fine location) != packagemanager permission granted && activitycompat checkselfpermission(usersactivity this, manifest permission access coarse location) != packagemanager permission granted){ 4 activitycompat requestpermissions(usersactivity this, new string\[]{android manifest permission access fine location}, request location); 5 } 6 else { 7 // getting last know user's location 8 location location = locationmanager getlastknownlocation(locationmanager network provider); 9 10 // checking if the location is null 11 if(location != null){ 12 // if it isn't, save it to back4app dashboard 13 parsegeopoint currentuserlocation = new parsegeopoint(location getlatitude(), location getlongitude()); 14 15 parseuser currentuser = parseuser getcurrentuser(); 16 17 if (currentuser != null) { 18 currentuser put("location", currentuserlocation); 19 currentuser saveinbackground(); 20 } else { 21 // do something like coming back to the login activity 22 } 23 } 24 else { 25 // if it is null, do something like displaying error and coming back to the menu activity 26 } 27 } 28 } 4\ sangat penting untuk menerapkan metode berikut agar savecurrentuserlocation savecurrentuserlocation metode berfungsi 1 @override 2 public void onrequestpermissionsresult(int requestcode, @nonnull string\[] permissions, @nonnull int\[] grantresults){ 3 super onrequestpermissionsresult(requestcode, permissions, grantresults); 4 5 switch (requestcode){ 6 case request location 7 savecurrentuserlocation(); 8 break; 9 } 10 } 4 ambil lokasi pengguna untuk mengambil lokasi pengguna, anda perlu menemukan siapa pengguna saat ini, menyimpan lokasinya dan kemudian mengembalikan lokasi yang disimpan di dasbor back4app anda untuk melakukan itu, terapkan metode berikut di mapsactivity mapsactivity dan panggil saat diperlukan 1 / saving the current user location, using the savecurrentuserlocation method of step 3, to avoid 2 null pointer exception and also to return the user's most current location / 3 savecurrentuserlocation(); 4 private parsegeopoint getcurrentuserlocation(){ 5 6 // finding currentuser 7 parseuser currentuser = parseuser getcurrentuser(); 8 9 if (currentuser == null) { 10 // if it's not possible to find the user, do something like returning to login activity 11 } 12 // otherwise, return the current user location 13 return currentuser getparsegeopoint("location"); 14 15 } 5 menampilkan lokasi pengguna saat ini di peta untuk menampilkan lokasi pengguna di peta, anda perlu mengambil lokasi pengguna dan kemudian membuat penanda di peta menggunakan informasi yang diambil untuk melakukan itu, terapkan metode berikut di mapsactivity mapsactivity dan panggil di onmapready onmapready metode 1 private void showcurrentuserinmap(final googlemap googlemap){ 2 3 // calling retrieve user's location method of step 4 4 parsegeopoint currentuserlocation = getcurrentuserlocation(); 5 6 // creating a marker in the map showing the current user location 7 latlng currentuser = new latlng(currentuserlocation getlatitude(), currentuserlocation getlongitude()); 8 googlemap addmarker(new markeroptions() position(currentuser) title(parseuser getcurrentuser() getusername()) icon(bitmapdescriptorfactory defaultmarker(bitmapdescriptorfactory hue red))); 9 10 // zoom the map to the currentuserlocation 11 googlemap animatecamera(cameraupdatefactory newlatlngzoom(currentuser, 5)); 12 } 6 mencari pengguna terdekat dengan pengguna saat ini sekarang anda memiliki sejumlah pengguna dengan koordinat spasial yang terkait, akan baik untuk mengetahui pengguna mana yang terdekat dengan yang lain ini dapat dilakukan dengan menggunakan parsequery pertama, anda perlu membuat kueri parseuser dan membatasinya dengan wherenear wherenear , memberi tahu di kolom mana dari kelas pengguna di back4app anda melakukan kueri (dalam hal ini kolom “location”) dan juga memberi tahu parsegeopoint referensi untuk kueri dari mana pengguna terdekat akan ditemukan (dalam hal ini parsegeopoint yang terkait dengan lokasi pengguna saat ini) kode berikut melakukan itu 1 parsequery\<parseuser> query = parseuser getquery(); 2 query wherenear("location", getcurrentuserlocation()); 2\ anda dapat membatasi jumlah hasil dari kueri ini dengan menambahkan batasan setlimit setlimit secara default, hasil dibatasi hingga 100 karena wherenear wherenear batasan akan membuat kueri mengambil array pengguna yang diurutkan berdasarkan jarak (terdekat hingga terjauh) dari currentuserlocation, dengan menetapkan batas pengguna dekat yang akan dicari menjadi angka 2, daftar hasil kueri hanya akan memiliki dua pengguna pengguna saat ini dan pengguna terdekat darinya kode berikut menetapkan batas hasil menjadi 2 1 query setlimit(2); 3\ sekarang setelah anda membatasi kueri anda, mari kita ambil hasilnya untuk melakukan itu, anda akan memanggil sebuah findinbackground findinbackground metode dan melewatkan sebagai argumen sebuah daftar pengguna, di mana hasil kueri akan disimpan dan juga sebuah parseexception untuk menangani kesalahan untuk menghindari kesalahan, jangan lupa untuk menghapus hasil yang di cache setelah kueri dijalankan kode berikut melakukan itu 1 query findinbackground(new findcallback\<parseuser>() { 2 @override public void done(list\<parseuser> nearusers, parseexception e) { 3 if (e == null) { 4 // do something with the list of results of your query 5 } else { 6 // handle the error 7 } 8 } 9 }); 10 parsequery clearallcachedresults(); 11 } 4\ jika tidak ada kesalahan yang terjadi, anda akan memiliki dalam daftar nearusers nearusers dua pengguna terdekat dengan pengguna saat ini (pengguna saat ini dan pengguna terdekat dari dia), sekarang anda hanya perlu mencari siapa yang bukan pengguna saat ini untuk melakukan itu, di dalam if (e == null) if (e == null) blok gunakan kode berikut 1 // avoiding null pointer 2 parseuser closestuser = parseuser getcurrentuser(); 3 // set the closestuser to the one that isn't the current user 4 for(int i = 0; i < nearusers size(); i++) { 5 if(!nearusers get(i) getobjectid() equals(parseuser getcurrentuser() getobjectid())) { 6 closestuser = nearusers get(i); 7 } 8 } 5\ sekarang anda tahu siapa pengguna terdekat dengan yang saat ini, anda dapat mengukur jarak antara mereka menggunakan distanceinkilometersto distanceinkilometersto metode untuk melakukan itu, gunakan kode berikut 1 // finding and displaying the distance between the current user and the closest user to him 2 double distance = getcurrentuserlocation() distanceinkilometersto(closestuser getparsegeopoint("location")); 3 alertdisplayer("we found the closest user from you!", "it's " + closestuser getusername() + " \nyou are " + math round (distance 100 0) / 100 0 + " km from this user "); metode alertdisplayer alertdisplayer yang digunakan di atas adalah sebagai berikut 1 private void alertdisplayer(string title,string message){ 2 android app alertdialog builder builder = new android app alertdialog builder(usersactivity this) 3 settitle(title) 4 setmessage(message) 5 setpositivebutton("ok", new dialoginterface onclicklistener() { 6 @override 7 public void onclick(dialoginterface dialog, int which) { 8 dialog cancel(); 9 } 10 }); 11 android app alertdialog ok = builder create(); 12 ok show(); 13 } 6\ anda juga dapat menampilkan kedua pengguna di peta, menggunakan kode berikut 1 // showing current user in map, using the method implemented in step 5 2 showcurrentuserinmap(mmap); 3 // creating a marker in the map showing the closest user to the current user location, using method implemented in step 4 4 latlng closestuserlocation = new latlng(closestuser getparsegeopoint("location") getlatitude(), closestuser getparsegeopoint("location") getlongitude()); 5 googlemap addmarker(new markeroptions() position(closestuserlocation) title(closestuser getusername()) icon(bitmapdescriptorfactory defaultmarker(bitmapdescriptorfactory hue green))); 6 // zoom the map to the currentuserlocation 7 googlemap animatecamera(cameraupdatefactory newlatlngzoom(closestuserlocation, 3)); metode lengkap yang menjalankan semua 6 langkah di atas adalah sebagai berikut 1 private void showclosestuser(final googlemap googlemap){ 2 parsequery\<parseuser> query = parseuser getquery(); 3 query wherenear("location", getcurrentuserlocation()); 4 // setting the limit of near users to find to 2, you'll have in the nearusers list only two users the current user and the closest user from the current 5 query setlimit(2); 6 query findinbackground(new findcallback\<parseuser>() { 7 @override public void done(list\<parseuser> nearusers, parseexception e) { 8 if (e == null) { 9 // avoiding null pointer 10 parseuser closestuser = parseuser getcurrentuser(); 11 // set the closestuser to the one that isn't the current user 12 for(int i = 0; i < nearusers size(); i++) { 13 if(!nearusers get(i) getobjectid() equals(parseuser getcurrentuser() getobjectid())) { 14 closestuser = nearusers get(i); 15 } 16 } 17 // finding and displaying the distance between the current user and the closest user to him, using method implemented in step 4 18 double distance = getcurrentuserlocation() distanceinkilometersto(closestuser getparsegeopoint("location")); 19 alertdisplayer("we found the closest user from you!", "it's " + closestuser getusername() + " \n you are " + math round (distance 100 0) / 100 0 + " km from this user "); 20 // showing current user in map, using the method implemented in step 5 21 showcurrentuserinmap(mmap); 22 // creating a marker in the map showing the closest user to the current user location 23 latlng closestuserlocation = new latlng(closestuser getparsegeopoint("location") getlatitude(), closestuser getparsegeopoint("location") getlongitude()); 24 googlemap addmarker(new markeroptions() position(closestuserlocation) title(closestuser getusername()) icon(bitmapdescriptorfactory defaultmarker(bitmapdescriptorfactory hue green))); 25 // zoom the map to the currentuserlocation 26 googlemap animatecamera(cameraupdatefactory newlatlngzoom(closestuserlocation, 3)); 27 } else { 28 log d("store", "error " + e getmessage()); 29 } 30 } 31 }); 32 parsequery clearallcachedresults(); 33 } 7 siapkan back4app untuk mengaitkan parsegeopoint ke parseobjects misalkan aplikasi contoh yang anda bangun terkait dengan sekelompok toko dengan afiliasi fisik akan menarik untuk menunjukkan semua afiliasi fisik dari toko ini di peta untuk melakukannya, buat kelas toko di dasbor back4pp, simpan toko yang ada sebagai parseobjects, lokasi mereka dan setelah itu aplikasi akan dapat menanyakan afiliasi fisik dan menampilkan posisi mereka di peta langkah langkah berikut akan membantu anda dengan itu 1 pergi ke situs web back4app , masuk, temukan aplikasi anda dan buka dasbornya 2\ pergi ke inti inti > peramban peramban > buat kelas buat kelas , seperti yang ditunjukkan pada gambar di bawah 3\ di bidang apa jenis kelas yang anda butuhkan? kelas yang anda butuhkan? , pilih opsi kustom kustom 4\ di bidang apa yang harus kita sebut? apa yang harus kita sebut? , ketik “toko” dan kemudian klik pada buat kelas buat kelas tombol 5\ kemudian kelas baru yang disebut “toko” akan ditampilkan dan anda harus memasukkan 2 kolom di dalamnya sebuah kolom dengan tipe data string string disebut nama nama , serta kolom lain dengan tipe data geopoint geopoint disebut lokasi lokasi jika anda tidak ingat cara membuat kolom, kembali ke langkah 2, di sana dijelaskan cara membuat kolom di dasbor back4app kelas anda harus berakhir seperti ini 6\ sekarang, isi kelas ini dengan informasi untuk melakukannya, klik pada tambahkan baris tambahkan baris tombol di menu di kanan atas atau di tengah halaman, seperti yang ditunjukkan pada gambar di bawah 7\ kemudian isi baris dengan informasi yang diperlukan nama toko dan lintang serta bujur setelah memasukkan beberapa data, kelas toko anda harus terlihat seperti gambar di bawah jika anda ingin memasukkan lebih banyak data, anda dapat mengklik tambahkan baris tambahkan baris tombol di atas, atau di + + tombol di bawah baris data terakhir sekarang anda siap untuk menggunakan informasi lokasi toko di aplikasi anda 8 tampilkan semua lokasi toko di peta 1\ anda dapat menampilkan semua toko yang anda tambahkan ke kelas anda di mapsactivity mapsactivity dengan menggunakan parsequery pertama, anda perlu membuat kueri parseobject, memberi tahu nama kelas dashboard back4pp yang ingin anda kueri (dalam hal ini kelas “toko”), dan membatasinya dengan whereexists whereexists , memberi tahu kolom kelas toko di back4app yang anda lakukan kueri (dalam hal ini kolom “lokasi”) kode berikut melakukan itu 1 parsequery\<parseobject> query = parsequery getquery("stores"); 2 query whereexists("location"); 2\ sekarang setelah anda membatasi kueri anda, mari kita ambil hasilnya untuk melakukan itu, anda akan memanggil metode findinbackground findinbackground dan mengoper sebagai argumen daftar toko, di mana hasil kueri akan disimpan dan juga parseexception untuk menangani kesalahan pembatasan whereexists whereexists hanya akan menyimpan parseobjects dari kelas yang memiliki parsegeopoint yang terkait dengan mereka yang menunjukkan lokasi mereka dalam daftar toko untuk menghindari kesalahan, jangan lupa untuk menghapus hasil yang di cache setelah kueri dijalankan kode berikut melakukan itu 1 query findinbackground(new findcallback\<parseobject>() { 2 @override public void done(list\<parseobject> stores, parseexception e) { 3 if (e == null) { 4 // do something with the list of results of your query 5 } else { 6 // handle the error 7 } 8 } 9 }); 10 parsequery clearallcachedresults(); 11 } 3\ jika tidak ada kesalahan yang terjadi, anda akan memiliki dalam daftar toko daftar toko semua toko dengan lokasi yang terkait, sekarang anda hanya perlu membuat loop untuk menampilkannya di peta untuk melakukannya, di dalam if (e == null) if (e == null) blok gunakan kode berikut 1 for(int i = 0; i < stores size(); i++) { 2 latlng storelocation = new latlng(stores get(i) getparsegeopoint("location") getlatitude(), stores get(i) getparsegeopoint("location") getlongitude()); 3 googlemap addmarker(new markeroptions() position(storelocation) title(stores get(i) getstring("name")) icon(bitmapdescriptorfactory defaultmarker(bitmapdescriptorfactory hue azure))); 4 } metode lengkap yang menjalankan semua 3 langkah di atas ada di bawah panggil pada onmapready onmapready metode agar berfungsi 1 private void showstoresinmap(final googlemap googlemap){ 2 3 parsequery\<parseobject> query = parsequery getquery("stores"); 4 query whereexists("location"); 5 query findinbackground(new findcallback\<parseobject>() { 6 @override public void done(list\<parseobject> stores, parseexception e) { 7 if (e == null) { 8 for(int i = 0; i < stores size(); i++) { 9 latlng storelocation = new latlng(stores get(i) getparsegeopoint("location") getlatitude(), stores get(i) getparsegeopoint("location") getlongitude()); 10 googlemap addmarker(new markeroptions() position(storelocation) title(stores get(i) getstring("name")) icon(bitmapdescriptorfactory defaultmarker(bitmapdescriptorfactory hue azure))); 11 } 12 } else { 13 // handle the error 14 log d("store", "error " + e getmessage()); 15 } 16 } 17 }); 18 parsequery clearallcachedresults(); 19 } 9 tampilkan pengguna terdekat dengan toko 1\ sekarang anda memiliki sejumlah toko dengan koordinat spasial yang terkait, akan baik untuk mengetahui toko mana yang terdekat dengan pengguna ini dapat dilakukan dengan menggunakan parsequery pertama, anda perlu membuat kueri parseobject, memberitahukan nama kelas dashboard back4pp yang ingin anda kueri (dalam hal ini kelas “stores”), dan membatasinya dengan wherenear wherenear , memberitahukan kolom kelas store di back4app yang anda lakukan kueri (dalam hal ini kolom “location”) kode berikut melakukan itu 1 parsequery\<parseobject> query = parsequery getquery("stores"); 2 query wherenear("location", getcurrentuserlocation()); 2\ anda dapat membatasi jumlah hasil dari kueri ini dengan menambahkan batasan setlimit setlimit secara default, hasil dibatasi hingga 100 karena wherenear wherenear pembatasan akan membuat kueri mengambil array pengguna yang diurutkan berdasarkan jarak (terdekat hingga terjauh) dari currentuserlocation, dengan menetapkan batas pengguna dekat yang ditemukan menjadi angka 1, daftar hasil kueri hanya akan memiliki satu toko yang terdekat dengan pengguna saat ini kode berikut menetapkan batas hasil menjadi 1 1 query setlimit(1); 3\ sekarang setelah anda membatasi kueri anda, mari kita ambil hasilnya untuk melakukan itu, anda akan memanggil sebuah findinbackground findinbackground metode dan mengoper sebagai argumen sebuah list objek toko, di mana hasil kueri akan disimpan dan juga sebuah parseexception untuk menangani kesalahan untuk menghindari kesalahan, jangan lupa untuk menghapus hasil yang di cache setelah kueri menemukan hasil kode berikut melakukan itu 1 query findinbackground(new findcallback\<parseobject>() { 2 @override public void done(list\<parseobject> nearstores, parseexception e) { 3 if (e == null) { 4 // do something with the list of results of your query 5 } else { 6 // handle the error 7 } 8 } 9 }); 10 parsequery clearallcachedresults(); 11 } 4\ jika tidak ada kesalahan yang terjadi, anda akan memiliki dalam nearstores nearstores daftar toko terdekat dengan pengguna saat ini, sekarang anda hanya perlu menampilkannya di mapsactivity mapsactivity untuk melakukan itu, di dalam if (e == null) if (e == null) blok gunakan kode berikut 1 parseobject closeststore = nearstores get(0); 2 // showing current user location, using the method implemented in step 5 3 showcurrentuserinmap(mmap); 4 // finding and displaying the distance between the current user and the closest store to him, using method implemented in step 4 5 double distance = getcurrentuserlocation() distanceinkilometersto(closeststore getparsegeopoint("location")); 6 alertdisplayer("we found the closest store from you!", "it's " + closeststore getstring("name") + " \n you are " + math round (distance 100 0) / 100 0 + " km from this store "); 7 // creating a marker in the map showing the closest store to the current user 8 latlng closeststorelocation = new latlng(closeststore getparsegeopoint("location") getlatitude(), closeststore getparsegeopoint("location") getlongitude()); 9 googlemap addmarker(new markeroptions() position(closeststorelocation) title(closeststore getstring("name")) icon(bitmapdescriptorfactory defaultmarker(bitmapdescriptorfactory hue green))); 10 // zoom the map to the closeststorelocation 11 googlemap animatecamera(cameraupdatefactory newlatlngzoom(closeststorelocation, 3)); metode alertdisplayer alertdisplayer yang digunakan di atas, adalah sama dengan langkah 6 (mencari pengguna terdekat dengan pengguna saat ini) metode lengkap yang menjalankan semua 4 langkah di atas adalah sebagai berikut 1 private void showcloseststore(final googlemap googlemap){ 2 parsequery\<parseobject> query = parsequery getquery("stores"); 3 query wherenear("location", getcurrentuserlocation()); 4 // setting the limit of near stores to 1, you'll have in the nearstores list only one object the closest store from the current user 5 query setlimit(1); 6 query findinbackground(new findcallback\<parseobject>() { 7 @override public void done(list\<parseobject> nearstores, parseexception e) { 8 if (e == null) { 9 parseobject closeststore = nearstores get(0); 10 // showing current user location, using the method implemented in step 5 11 showcurrentuserinmap(mmap); 12 // finding and displaying the distance between the current user and the closest store to him, using method implemented in step 4 13 double distance = getcurrentuserlocation() distanceinkilometersto(closeststore getparsegeopoint("location")); 14 alertdisplayer("we found the closest store from you!", "it's " + closeststore getstring("name") + " \nyou are " + math round (distance 100 0) / 100 0 + " km from this store "); 15 // creating a marker in the map showing the closest store to the current user 16 latlng closeststorelocation = new latlng(closeststore getparsegeopoint("location") getlatitude(), closeststore getparsegeopoint("location") getlongitude()); 17 googlemap addmarker(new markeroptions() position(closeststorelocation) title(closeststore getstring("name")) icon(bitmapdescriptorfactory defaultmarker(bitmapdescriptorfactory hue green))); 18 // zoom the map to the closeststorelocation 19 googlemap animatecamera(cameraupdatefactory newlatlngzoom(closeststorelocation, 3)); 20 } else { 21 log d("store", "error " + e getmessage()); 22 } 23 } 24 }); 25 26 parsequery clearallcachedresults(); 27 28 } 10 uji aplikasi anda 1\ masuk di situs web back4app https //www back4app com/ 2\ temukan aplikasi anda dan klik pada dasbor dasbor > inti inti > peramban peramban > pengguna pengguna dan buat beberapa pengguna dengan lokasi yang terkait untuk memungkinkan metode tampilkanpenggunaterdekat tampilkanpenggunaterdekat berfungsi 3\ jalankan aplikasi anda di perangkat nyata dan daftar akun coba setiap fitur! 4\ kembali ke dasbor back4pp dan verifikasi apakah lokasi anda disimpan di baris pengguna anda selesai! pada tahap ini, anda dapat menggunakan beberapa fitur parsegeopoint melalui back4app!