我是mongodb的新手。
我想使用mongodb的地理空间功能查询从Google地图获得的边界中的位置。就像insideBox(swLng,swLat,neLng,neLat)。但是当地图缩小时,它无法给我正确的结果,因为neLng / neLat小于swLng / swLat。似乎这是使用x> swLng和x swLat和y
那么我可以通过insideBox实现查询,还是必须调整坐标,还是应该使用near?
最佳答案
正如我在上面评论的那样,当东北和西南点越过国际日期线时,查询将失败,因为右上角的y小于左下角的y。
如果您将mongodb与php和doctrine一起使用,则需要进行两个查询并在客户端合并结果,如下所示:
if ($x1 > $x2) {
$qb->field('coordinates')->withinBox(-180, $y1, $x2, $y2);
$result1 = $qb->getQuery()->execute();
$qb->field('coordinates')->withinBox($x1, $y1, 180, $y2);
$result2 = $qb->getQuery()->execute();
$result = $result1->toArray() + $result2->toArray();
} else {
$qb->field('coordinates')->withinBox($x1, $y1, $x2, $y2);
$result = $qb->getQuery()->execute();
$result = $result->toArray();
}
关于google-maps - Mongodb geoWithin谷歌 map 边界,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15802525/