我正在开发一个应用程序,用户可以搜索他所在位置附近的项目.
当用户注册我的服务时,会采用他们的长/纬度坐标(这实际上是从一个邮政编码中获取的,然后通过谷歌查找长/拉).当用户添加项目时,也会发生这种情况,要求他们提供项目的zip /邮政编码,并将其转换为long / lat.
我的问题是如何使用MySQL进行查询,从用户所在的位置搜索20英里,并获取20英里范围内的所有项目?
最佳答案 假设精度不是一个问题(采用正方形而不是圆形,并忽略地形),你可以这样做:
SELECT ... FROM ...
WHERE (ABS(firstLong - secondLong) < 20) AND (ABS(firstLat - secondLat) < 20);
如果你确实希望把它变成一个圆圈,那么只需写一个稍微复杂的距离数学公式:SQRT(longDelta * longDelta latDelta * latDelta)< 20