iOS
...
Parse Swift SDK
Data Objects

Mengelola Geoqueries dengan ParseGeoPoint di ParseSwift SDK

9min

Geoqueries

Pendahuluan

Kami menggunakan istilah Geoqueries untuk merujuk pada jenis kueri di mana kondisi mereka melibatkan ParseGeoPoint jenis bidang. Disarankan untuk menggunakan ParseGeoPoint struktur untuk menyimpan data lokasi geografis di Database Back4App. ParseSwift SDK menyediakan serangkaian metode yang memungkinkan kami untuk mengkueri data sesuai dengan kondisi yang diterapkan pada ParseGeoPointtipe data.

Prasyarat

Untuk menyelesaikan tutorial ini, Anda akan membutuhkan:

Tujuan

Untuk memahami cara mengkueri data menggunakan kondisi pada data lokasi geografis.

1 - Tinjauan cepat tentang Kelas Query<U>

Setiap kueri yang dilakukan pada Database Back4App dilakukan melalui kelas generik Query<U>. Parameter generik U (yang sesuai dengan ParseObject protokol) adalah tipe data dari objek yang ingin kami ambil dari database.

Diberikan tipe data seperti MyObject, kita mengambil objek-objek ini dari Database Back4App dengan cara berikut

Swift


Anda dapat membaca lebih lanjut tentang Query<U> kelas di sini pada dokumentasi resmi.

2 - Simpan beberapa data di Back4App

Sebelum kita mulai mengeksekusi kueri, kita harus menyimpan beberapa data contoh di Database Back4App. Dengan mengikuti Panduan Cepat, Anda dapat mengonfigurasi dan menghubungkan Aplikasi iOS contoh Anda ke database Back4App Anda. Untuk panduan ini, kita akan menyimpan informasi tentang kota. Kita menggunakan struktur berikut untuk mengorganisir informasi kota:

Swift


Sekarang, kita melanjutkan untuk menyimpan data sampel. Langkah ini dapat diimplementasikan menggunakan Swift atau langsung dari konsol aplikasi Anda di platform Back4App.

Swift
Back4App's console


3 - Kuery data

Mengurutkan hasil

Dengan data contoh yang disimpan, kita dapat mulai melakukan berbagai jenis kueri.

Untuk contoh pertama kita, kita akan memilih semua kota dan mengurutkannya tergantung seberapa jauh mereka dari titik geopoint referensi. Kita mengimplementasikan kueri ini dengan memberikan batasan pada Query<City> objek. Metode near(key:geoPoint:) yang tersedia melalui ParseSwift SDK memungkinkan kita untuk membangun batasan tersebut. Sebagai argumen, kita memberikan nama field (biasanya disebut sebagai key) yang berisi geoPoint referensi.

Swift


Memilih hasil dalam wilayah tertentu

Misalkan kita ingin memilih kota-kota dalam wilayah tertentu. Kita dapat mencapainya dengan batasan yang dibuat oleh metode withinKilometers(key:geoPoint:distance:). Sebagai argumen, kita mengirimkan nama field yang berisi lokasi kota, pusat wilayah (sebuah ParseGeoPoint tipe data) dan jarak maksimum (dalam km) sebuah kota dapat berada dari pusat wilayah ini. Untuk memilih semua kota yang paling jauh 3000km dari Kingston - Jamaika, kita dapat melakukannya dengan cara berikut

Swift


Selain itu, ketika jarak diberikan dalam mil alih-alih kilometer, kita dapat menggunakan withinMiles(key:geoPoint:distance:sorted:) metode.

Metode yang kurang umum, withinRadians(key:geoPoint:distance:sorted:), juga tersedia jika jarak diberikan dalam radian. Penggunaannya sangat mirip dengan metode sebelumnya.

Memilih hasil dalam poligon yang diberikan

Dalam contoh sebelumnya, kami memilih kota-kota dalam suatu wilayah yang diwakili oleh wilayah berbentuk lingkaran. Jika kami memerlukan bentuk non-lingkaran untuk wilayah tersebut, ParseSwift SDK memungkinkan kami untuk membangun wilayah tersebut dari titik-titik sudutnya.

Sekarang, tujuan dari contoh ini adalah untuk memilih kota-kota dalam poligon dengan lima titik. Titik-titik ini dinyatakan menggunakan ParseGeoPoint struct. Setelah kita membuat titik-titik tersebut, kita menginstansiasi ParsePolygon. Poligon ini kemudian diteruskan ke withinPolygon(key:polygon:) metode (yang disediakan oleh ParseSwift SDK) untuk membangun batasan yang akan memungkinkan kita untuk memilih kota-kota dalam poligon ini.

Swift


Kesimpulan

Saat ini melakukan operasi pada data lokasi untuk menawarkan layanan kustom sangat penting. Back4App bersama dengan ParseSwift SDK memudahkan untuk menerapkan jenis operasi tersebut.