Как получить геозоны из базы данных пожарного магазина? - PullRequest
0 голосов
/ 14 апреля 2020

Итак, у меня есть база данных пожарного магазина с местами, которые будут использоваться для создания моих геозон. В настоящее время я получаю геозоны локально, но не могу заставить их работать, выбирая места из пожарного магазина. Насколько я знаю, он загружает данные асинхронно, поэтому он слишком медленный, и к тому времени, когда геозоны должны быть созданы, это слишком поздно, и я получаю исключение, говорящее, что геозоны не могут быть добавлены.

Могу ли я выбрать места из пожарного магазина и использовать их для создания своих геозон?

Вот код, который я пытаюсь использовать для получения из пожарного магазина:

    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)
            }
}
...