Итак, у меня есть база данных пожарного магазина с местами, которые будут использоваться для создания моих геозон. В настоящее время я получаю геозоны локально, но не могу заставить их работать, выбирая места из пожарного магазина. Насколько я знаю, он загружает данные асинхронно, поэтому он слишком медленный, и к тому времени, когда геозоны должны быть созданы, это слишком поздно, и я получаю исключение, говорящее, что геозоны не могут быть добавлены.
Могу ли я выбрать места из пожарного магазина и использовать их для создания своих геозон?
Вот код, который я пытаюсь использовать для получения из пожарного магазина:
backendManager.getAllBookPlaces(object: BackendManager.MyCallbackPlaces {
override fun onCallback(value: ArrayList<BookPlace>) {
Log.d("VALUE", value.size.toString())
bookPlaceBooks = value
bookPlaceBooks.forEach {
geofenceList.add(Geofence.Builder()
// Set the request ID of the geofence. This is a string to identify this
// geofence.
.setRequestId(it.name)
// Set the circular region of this geofence.
.setCircularRegion(
it.latLng!!.latitude,
it.latLng!!.longitude,
GeofencingConstants.GEOFENCE_RADIUS_IN_METERS
)
// Set the expiration duration of the geofence. This geofence gets automatically
// removed after this period of time.
.setExpirationDuration(GeofencingConstants.GEOFENCE_EXPIRATION_IN_MILLISECONDS)
// // Set the transition types of interest. Alerts are only generated for these
// transition. We track entry and exit transitions in this sample.
.setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER or Geofence.GEOFENCE_TRANSITION_EXIT)
// // Create the geofence.
.build())
}
}
})
** BACKEND класс **
fun getAllBookPlaces(myCallback : MyCallbackPlaces) {
FirebaseFirestore.getInstance().collection("bookplaces")
.get()
.addOnSuccessListener { result ->
if (!result.isEmpty) {
for (document in result) {
Log.d("BOOKPLACES", "${document.id} => ${document.data}")
var bookPlace = document.toObject(BookPlace::class.java)
bookPlaces!!.add(bookPlace)
Log.d("BOOKPLACES", bookPlaces!!.size.toString())
}
myCallback.onCallback(bookPlaces)
}
else{
Log.d("BOOKPLACES", "NULLLLLL")
}
}
.addOnFailureListener { exception ->
Log.d("BOOKPLACES", "Error getting documents: ", exception)
}
}