簡體   English   中英

在許多位置的Google App Engine NDB查詢

[英]Google App Engine NDB Query on Many Locations

我正在開發基於Google App Engine的網絡應用。 它在數據存儲區中存儲了數百個位置(名稱,緯度,經度)。 我的目的是在Google地圖上顯示它們。 由於它們很多,因此我已向地圖的空閑事件注冊了一個javascript函數,並在執行時將地圖邊界(minLat,maxLat,minLng,maxLng)發布到請求處理程序,該請求處理程序應僅從數據存儲中檢索位置在指定的邊界內。

問題是它不允許我在查詢中執行多個不等式(即Place.latminLat,Place.lntminLng)。

我應該怎么做? (還嘗試盡量減少所需查詢的數量)

您可以將地圖划分為多個區域,進行算法以將當前位置轉換為一個區域,然后通過等式查詢獲取位置。 在這種情況下,您將需要重疊的區域,允許地點成為其中許多區域的一部分,並且最好使區域大於地圖的大小,以最大程度地減少對多個查詢的需求。

那只是想法的概述,實際的實現會稍微復雜一些,但是我手頭沒有。

另一個選擇是使用Geohash,它實際上很酷,您可以在此處閱讀有關它們的代碼以及代碼示例: 使用Google App Engine + geohash + Faultline校正的可擴展,快速,准確的地理應用程序

您沒有說數據點多久更新一次,但是假設1)它們很少更新,以及2)只有數百個點,然后考慮只查詢一次,然后將它們存儲在內存緩存中。 然后,您的處理程序函數將僅從memcache獲取並在內存中進行過濾。

這不會無限擴展,但由於App Engine定價的工作方式,它可能比每次查詢數據存儲區都便宜。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM