地理搜索

在模型上放一个 geopoint 字段,就可以查询哪些记录离某个点最近,并按距离排序。这些查询支持点和半径。

Geopoint 字段

geopoint 字段保存一个纬度和一个经度,控制台用地图选点器来编辑它。一个模型可以有多个这样的字段,每个都是单独命名的点。该点与记录写入在同一个事务中建立索引,因此记录一经保存就可以按位置找到。

距某个点或某条记录最近

searchByLocation接受一个纬度和一个经度,返回该点附近的记录。findNearbyRecords接受一条记录,返回离它最近的其他记录,不包含这条记录本身。两者都可以限定为某一个模型。结果按距离由近到远返回,每条结果带有以米为单位的距离,以及记录的 id、模型键、自然键和内容。

半径与分页

半径是可选的。指定半径时,结果止于该距离;不指定时,查询会返回最近的记录,无论它们在多远的地方。结果采用游标分页,只能向前翻页,默认每页 50 条。纬度超出 -90 到 90,或经度超出 -180 到 180,都会被拒绝。

访问规则与已有记录

查询在调用方的行级访问规则下运行。给已有记录的模型添加 geopoint 字段,不会为现有行建立索引。foir geometry提供了列出索引中缺失记录并为其回填的命令。

仅支持点和半径

不支持区域、线和边界框。

阅读详情

CLI 参考文档介绍了 geometry 命令:在某个点附近搜索、查找离另一条记录最近的记录,以及回填尚未建立索引的记录。