我有一个看起来像这样的MySQL数据库:
Postcode int(4),
City varchar,
State varchar,
Latitude decimal(7,4),
Longitude decimal(7,4)
我希望用户输入他们的邮政编码(例如1660
)和半径x(简称10
)英里或公里。当他们点击搜索时,我想返回该半径范围内所有城市的列表。我有一个数据库,其中包含澳大利亚所有地区的所有邮政编码,城市,纬度,经度等。
答案 0 :(得分:1)
如果您可以牺牲一些精确度(通过选择距离邮政编码1660 10英里的矩形区域内的城市),那么解决方案可以简单如下:
如果它必须精确地半径10英里(这意味着该区域是一个圆圈),那么解决方案将非常复杂,我不敢在一个查询中做到这一点。您需要考虑一些辅助列并使用距离和方位计算公式来完成它。
参考:Calculate distance, bearing and more between Latitude/Longitude points