gpt4 book ai didi

google-maps - Mongodb geo在谷歌地图范围内

转载 作者:行者123 更新时间:2023-12-03 15:59:07 24 4
gpt4 key购买 nike

我对 mongodb 有点陌生。

我想使用 mongodb 的地理空间功能来查询从谷歌地图获得的边界中的位置。就像 insideBox(swLng, swLat, neLng, neLat) 一样。但本地图缩小时,它无法给我正确的结果,因为 neLng/neLat 小于 swLng/swLat。看来这是使用 x > swLng 和 x < neLng 以及 y > swLat 和 y < neLat 计算的,没有考虑 map 投影。

那么我可以通过withinBox来实现查询,还是必须调整坐标,或者应该使用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 geo在谷歌地图范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15802525/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com