我正在制作一個功能,比如按緯度和經度在地圖上搜索。
我的 firebase 欄位如下所示:

eventLoc 欄位是陣列欄位。
例如,我有這樣的當前地圖邊界資料:
bounds : {
max_lat: 37.56416769262514,
min_lat: 37.55697370580578,
max_lng: 127.04739120688566,
min_lng: 127.03271908496473
}
所以我嘗試過這樣的查詢:

(如果陣列 eventLoc 欄位包含有條件的 lat/lng,我想獲取檔案,這個查詢對嗎?不是 'evenLoc.lat[0]' ?)
但我得到一個錯誤:
FirebaseError:無效的查詢。帶有不等式(<、<=、!=、not-in、> 或 >=)的所有 where 過濾器必須位于同一欄位中。但是您在“eventLoc.lat”和“eventLoc.lng”上有不等式過濾器
那么如果我不能使用超過 2 個欄位進行搜索,我該怎么辦,有沒有辦法通過我的資料庫結構按經度和緯度獲取范圍資料?
uj5u.com熱心網友回復:
Firestore 中沒有針對此類查詢內置任何內容,但您可以使用地理查詢檔案中的方法大綱在Firestore之上自己構建它。
該解決方案的作業原理是向每個檔案添加額外的資料,將每個緯度/經度對編碼為所謂的 geohash,然后對 geohash 執行范圍查詢。

要記住幾件事:
- 您通常需要針對特定??范圍執行多個查詢,因為 geohash 區域可能與您的范圍不完全匹配。
- 您將閱讀比需要更多的檔案,因為 geohash 可能大于您的界限,這就是為什么該鏈接顯示如何進一步剔除應用程式代碼中的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/488069.html
