在应用程序中有要求声明将所有与特定国家和/或城市绑定(bind)的对象找出到谷歌地图中。
我们有使用 google map api 预先计算并存储在数据库中的具有各自纬度和经度的对象。有时,这些对象会在一定的服务范围/半径内提供服务,在该范围内它们可以提供服务。
例如现在的情况就像我想找出所有的对象 例如,它位于阿姆斯特丹。
应用程序应该找到位于 阿姆斯特丹,还有不完全位于阿姆斯特丹的物体 但在附近,服务范围可达阿姆斯特丹。
所以我知道阿姆斯特丹返回的纬度、经度值 谷歌地图,还有具有各自纬度、经度值和 服务范围/半径存储在数据库中。我怎样才能让它成为可能?
最佳答案
您可能应该在数据库中将国家/城市表示为多边形,然后使用 OpenGIS 样式的多边形相交函数进行相交。
但是,MySQL 不会正确实现多边形交集(仅 MBR - 最小边界矩形)。因此,这种方法虽然在理论上是正确的,但对 MySQL 根本不起作用。您可能需要考虑迁移到 Postgres。
您可以做的是使用您的数据库的 MBR 交集功能,并用您自己的执行多边形/点交集的代码补充它们(您可以找到执行此操作的库)。
关于php - 地理邻近搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/626024/