我试图找出比较一个邮政编码(用户提供的)和一大堆其他邮政编码(大约有 200 个邮政编码)之间的距离的最有效方法(相对于加载时间)现在的代码,但随着时间的推移可能会增加)。我不需要任何精确的东西,只是在球场上。
我下载了美国各地的邮政编码 csv 文件,并且我有一个函数可以生成两个邮政编码之间的距离(我相信以弧度为单位)。我不需要显示我只需要的距离对 200 个邮政编码进行排序,其中最接近的为第一个结果。
我将 csv 文件上传到 mysql 表。我想我可以循环遍历所有 200 个邮政编码,并为每个邮政编码更新一个包含距离的字段。然后使用 ORDER BY,从最近到最远对它们进行排序。
有谁知道更有效的方法吗?这种方式需要在每次运行搜索查询时更新整个邮政编码数据库。现在只有 200 个邮政编码,这不是什么大问题,但我想它会减慢数据库构建时的加载时间。在此先感谢您的任何建议,非常感谢!
最佳答案
在 JavaScript 中:
var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad();
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) *
Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
其中 d = 两点之间的距离
关于php - MySQL PHP邮政编码比较具体距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2349763/