2011-06-16 131 views
1

我有一個模型用戶使用MongoDB存儲的緯度和經度數據。如何使用mongoid,rails和谷歌地圖搜索「附近用戶」

我正在使用google maps javascript api v3來獲取此數據。

什麼是顯示「附近用戶」的最佳方式?

+0

很抱歉,此過於寬泛「,同時」太局部「。我們在這裏幫助,而不是爲你想。告訴我們您遇到的具體問題,或告訴我們什麼孤立部分給您帶來麻煩。 – coreyward 2011-06-16 04:29:43

+0

對不起,我應該用不同的措詞:/我明顯可以想到各種解決方案,但我不知道mongo有geospacial索引。 DhruvPathak的回答很完美。 – kinet 2011-06-16 18:13:45

回答

1

雖然DhruvPathak答案是正確的,這裏是做地理相當於mongoid Ruby代碼查詢

User.where(:loc => {'$near' => [50,50]}) 

User.where(:loc => {'$near' => [50,50],'$maxDistance' => 5}) 
1

存儲您的數據,以便它可以具有地理空間索引。 MongoDb對此有內置支持。然後,您可以輕鬆地使用內置的查詢距離/鄰近距離 。

看一看:

http://www.mongodb.org/display/DOCS/Geospatial+Indexing

*Querying 

The index can be used for exact matches: 

db.places.find({ loc : [50,50] }) 

Of course, that is not very interesting. More important is a query to find points near another point, but not necessarily matching exactly: 

db.places.find({ loc : { $near : [50,50] } }) 

The above query finds the closest points to (50,50) and returns them sorted by distance (there is no need for an additional sort parameter). Use limit() to specify a maximum number of points to return (a default limit of 100 applies if unspecified): 

db.places.find({ loc : { $near : [50,50] } }).limit(20) 

You can also use $near with a maximum distance 

db.places.find({ loc : { $near : [50,50] , $maxDistance : 5 } }).limit(20)* 
+0

哇,mongoid岩石。 – kinet 2011-06-16 06:38:13

+0

@ kinet糾正.... MONGODB岩石! :) – DhruvPathak 2011-06-17 06:05:55

相關問題