我正在尝试使用$ near来查找我的用户附近的地方。
$places = Places::model ()->findAll(array (
"conditions" => array (
'location' => Array('near' => array((float)$this->latitudeUser,(float)$this->longitudeUser)),
),
"maxDistance" => 1,
"limit" => 5,
));
一切似乎都有效,除了它找到了美国德克萨斯州和我在加拿大蒙特利尔的地方。我不知道我能做些什么来使maxDistance工作。似乎我不能使用GeoNear或nearSphere,因为EMongoDocuments似乎不支持它们。
所以我错过了一些明显的东西吗?
我知道mongomapper-near-with-maxdistance-mongooperationfailure-geo-values-have-to,但没有任何帮助。
编辑:改变经度线的顺序
答案 0 :(得分:0)
MongoDB需要以下格式的坐标:纬度,经度。你的阵列有错误的方法。距离应以度为单位,除非您使用nearSphere。来自nearSphere的结果应该与near相似,因此EMongoDocuments应该支持。如果您使用nearSphere,则maxdistance位于弧度中,因此如果您使用它,则将距离(以km为单位)除以地球半径(以km为单位,约为6371)。
答案 1 :(得分:0)
引用蒙古人的神奇家伙: 我相信你需要将maxDistance放在$ near条件中。像这样:
$places = Places::model ()->findAll(array (
"conditions" => array (
'location' => Array('near' => array((float)$this->latitudeUser,(float)$this->longitudeUser), 'maxDistance' => 1),
),
"limit" => 5,
));
我不熟悉这个框架所以我不完全确定这是否正确,但我的基础是相应的MongoDB查询的正确语法:
db.places.find( { location : { $near : [50,50] , $maxDistance : 5 } } ).limit(5)
注意$ maxDistance与$ near的条件相同。尝试一下,让我们知道它是否有帮助。 谢谢,
答案 2 :(得分:0)