Firebase - получение данных в виде объекта LatLng из dataSnapshot - PullRequest
0 голосов
/ 03 марта 2019

У меня есть следующая структура БД:

enter image description here

Я хочу получить latitude и longitude в LatLng объект

Что я пробовал до сих пор:

private fun loadMarkersFromDB(){
    val query = database.getReference("spots/").orderByChild("place/latLng/")
    query.addListenerForSingleValueEvent(object: ValueEventListener{
        override fun onDataChange(dataSnapshot: DataSnapshot) {
            if(dataSnapshot.exists()){
                var position: LatLng
                for(spotLatLng:DataSnapshot in dataSnapshot.children){
                    position = spotLatLng.child("place/latLng/").value as LatLng
                    Log.d(TAG, "Database positions: $position")
                }
            }
        }
        override fun onCancelled(p0: DatabaseError) {
        }
    } )
}

, но это не работает, и я получаю ошибку:

java.util.HashMap не может быть приведен к com.google.android.gms.maps.model.LatLng

1 Ответ

0 голосов
/ 03 марта 2019

Как отметил Дуг, вы не можете переносить данные снимка в нужное вам место.

Поэтому вместо этого я беру latitude и longitude по отдельности, например:

private fun loadMarkersFromDB(){
    val query = database.getReference("spots/").orderByChild("place/latLng")
    query.addListenerForSingleValueEvent(object: ValueEventListener{
        override fun onDataChange(dataSnapshot: DataSnapshot) {
            if(dataSnapshot.exists()){
                var lat: Double
                var lng: Double
                var position: LatLng
                for(spotLatLng:DataSnapshot in dataSnapshot.children){
                    lat = spotLatLng.child("place/latLng/latitude/").value.toString().toDouble()
                    lng = spotLatLng.child("place/latLng/longitude/").value.toString().toDouble()
                    position = LatLng(lat, lng)
                    Log.d(TAG, "Lat: ${position.latitude} Lng: ${position.longitude}")
                }
            }
        }
        override fun onCancelled(p0: DatabaseError) {
        }
    } )
}

Если есть лучший способ, пожалуйста, дайте мне знать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...