我在 java 中使用 firestore for android 編寫小型應(yīng)用程序。我正在嘗試按集合中的緯度字段進(jìn)行查詢。我的集合中有一些用戶,應(yīng)該由這個(gè)查詢返回——甚至瀏覽器中的 firestore 控制臺(tái)也會(huì)返回這些用戶。問(wèn)題是我每次都會(huì)出錯(cuò):java.lang.RuntimeException:字段“緯度”不是 java.lang.String我的代碼:public Map<String, Object> getUsersBasedOnBounds2(LatLngBounds bounds){ db = FirebaseFirestore.getInstance(); Query query = db.collection(collection).whereGreaterThanOrEqualTo("latitude", (int)bounds.northeast.latitude); query.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() { @Override public void onSuccess(QuerySnapshot queryDocumentSnapshots) { Log.d(TAG, queryDocumentSnapshots.getDocuments().toString()); for (QueryDocumentSnapshot doc : queryDocumentSnapshots){ Log.d(TAG, doc.getString("latitude")); } } }); return null;}我究竟做錯(cuò)了什么?
2 回答

LEATH
TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
由于您要求 API 檢索String
字段latitude
,因此錯(cuò)誤會(huì)通知您沒有latitude
字段是 `String. 正如文檔所說(shuō):
RuntimeException
如果值不是字符串則拋出。
該字段的值latitude
可能存儲(chǔ)為數(shù)字,在這種情況下,您可以直接將其作為數(shù)字獲取。由于該值很可能存儲(chǔ)為雙精度值,因此可以通過(guò)調(diào)用來(lái)完成getDouble
:
doc.getDouble("latitude")
或者通過(guò)調(diào)用 將其作為通用值獲取get
,并將其轉(zhuǎn)換為字符串:
String.valueOf(doc.get("latitude"))

慕妹3242003
TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
由于您正在打印日志Log.d(TAG, doc.getString("latitude"));
而不是使用:
Log.d(TAG, String.valueOf(doc.getString("latitude")));
添加回答
舉報(bào)
0/150
提交
取消