【发布时间】:2021-04-08 16:09:39
【问题描述】:
为什么 firebase 将我转换为字符串的坐标保存为 Long? 我像这样转换它们:
update("latitude", latitude.toString(), "longitude", longitude.toString())
我可以将它们视为 firebase 中的字符串
但是当我首先使用快照侦听器检索它们时,它们以 Long 形式出现,导致我的应用程序崩溃,然后它们变成字符串。这是日志
2021-04-08 14:05:29.089 21864-21864/com.crynet.overeser D/MYLOG:很长
2021-04-08 14:05:29.503 21864-21864/com.crynet.overser D/MYLOG:很长
2021-04-08 14:05:30.314 21864-21864/com.crynet.overeser D/MYLOG:它是一个字符串
2021-04-08 14:05:36.098 21864-21864/com.crynet.overser D/MYLOG:它是一个字符串
fb.collection("delivery").addSnapshotListener { collection, _ ->
if(collection != null && !collection.isEmpty){
map.clear()
for (doc in collection){
val lat = doc["latitude"] as String // Crash here
val long = doc["longitude"] as String
val trackingLatLng = LatLng(lat.toDouble(), long.toDouble())
val options = MarkerOptions().position(trackingLatLng)
map.addMarker(options)
}
} else {
Toast.makeText(this, "Nenhuma entrega está a ser feita de momento", Toast.LENGTH_LONG).show()
map.clear()
}
}
【问题讨论】:
-
可能包含您用于检索值的代码?
-
您需要提供显示生成日志语句的代码的代码,并显示如何从 Firebase 检索坐标。显然,firebase 将它们保存为字符串,而您的代码中存在输入问题。所以你标题的问题是不正确的。
-
对不起,我真的忘记包含代码了。
-
如果使用特定的
DocumentSnapshot.getString()方法而不是通用的DocumentSnapshot.get()会发生什么? -
另外我不知道为什么你试图将它们存储为字符串,当你阅读它们时看起来你将它们转换为双精度值?