我有一個網站,人們可以在谷歌地圖上查看一些地方,這些地方是用lat/lng座標存儲的。存儲是mongodb。現在,當用戶導航地圖時,我需要查找現在哪些地方位於地圖的可見部分。Google地圖搜索與mongodb地理空間最佳戰略
我是mongo的新手,但看過空間部分。我的問題現在是執行此查找的有效方法。
每次用戶導航地圖時,我是否需要製作一個ensureIndex,然後如何查詢地圖可見邊界內的所有地方?
我有一個網站,人們可以在谷歌地圖上查看一些地方,這些地方是用lat/lng座標存儲的。存儲是mongodb。現在,當用戶導航地圖時,我需要查找現在哪些地方位於地圖的可見部分。Google地圖搜索與mongodb地理空間最佳戰略
我是mongo的新手,但看過空間部分。我的問題現在是執行此查找的有效方法。
每次用戶導航地圖時,我是否需要製作一個ensureIndex,然後如何查詢地圖可見邊界內的所有地方?
根據蒙戈文檔,您可以在邊框內查詢,像這樣
box = [[40.73083, -73.99756], [40.741404, -73.988135]]
db.places.find({"loc" : {"$within" : {"$box" : box}}})
這裏的關鍵點是內使用的邊框內查詢。
爲了得到值你的箱子,剛剛得到的谷歌地圖的界限,像這樣
map.getBounds()
其中映射是谷歌地圖的對象。 getBounds將返回一個LatLngBounds對象,您可以從中構建您的框以查詢mongo。
至於ensureIndex,你應該這樣做,據我所知。
我應該做一個db.places.ensureIndex({loc:「2d」}),而不是指定min/max的任何內容嗎? –
假設你使用最小/最大-180/180映射地球上的緯度/經度值,這個loc:「2d」在沒有最小/最大值的情況下就足夠了,如果你映射某個其他範圍的值,那麼你可以用min /最大值,但是loc:「2d」,沒有最小值/最大值指定默認值爲-180/180 – omarello
確保它也適用於地圖邊界......我知道在阿拉斯加以外沒有很多地方在+ -180°,但仍然有人可能需要它。 –