我具有以下数据库结构:
我想将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
答案 0 :(得分:1)
如Doug所指出的那样,您无法将转换快照数据带到所需的任何位置。
因此,我像这样分别抓起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) {
}
} )
}
如果有更好的方法,请告诉我