首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >邮政编码查询

邮政编码查询
EN

Stack Overflow用户
提问于 2011-01-18 01:53:33
回答 5查看 2.8K关注 0票数 0

客户希望在他们的网站上有一个页面,用户可以在那里搜索他们的产品范围的库存清单。他们想要的是能够输入英国PostCode,并以最接近的顺序显示他们的仓储商列表。

有没有办法利用谷歌地图来确定最近的供应商?

我有一个MySQL数据库与所有供应商的邮政编码和详细信息,我将有用户的邮政编码以及使用。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-01-18 02:10:28

我认为您需要使用CodePoint数据来将您的邮政编码映射到经度和纬度。Codepoint可以作为commercial product使用,也可以使用Codepoint Open

获得纬度和经度后,可以使用标准算法(如Haversine或Vincenty )计算点之间的距离

编辑

可以在here中找到CodePoint Open CSV文件的结构。请注意,位置被保存为Northing和Esatings,而不是经度和纬度,因此需要进行转换。网上有很多关于这方面的文章,例如:

代码语言:javascript
复制
http://www.deepbluesky.com/blog/-/converting-os-coodinates-into-longitude-latitude_7/
http://mediakey.dk/~cc/convert-northing-and-easting-utm-to-longitude-and-latitude/

但您需要注意的是,OS Northing/Eastings是基于Aly1830椭球,而不是Google地图(和大多数GSM系统)所使用的WGS84模型。如果不能考虑到这种差异,你可能会在康沃尔和东英吉利之间相差70-120米。

您还可以在Movable Type站点上找到执行此转换的PHP函数(使用GeoData的任何PHP开发人员的必读资料。我建议在stockist数据库中添加几个off列来表示经度和纬度,并添加一个一次性脚本来使用Codepoint数据更新所有现有数据,然后修改stockist的插入/更新例程,使这些信息保持最新。使用PHP的另一个解决方案是Jonathan Stott的PHPCoord

为了在数据库查询中获得更高的性能,请在计算距离之前根据“边界框”查找经度/经度。我已经解释了如何响应similar query

票数 3
EN

Stack Overflow用户

发布于 2011-01-18 02:03:21

我认为你需要更多的数据。我建议您需要将每个英国邮政编码的纬度和经度与邮政编码本身一起存储。我认为这些数据可以从皇家邮政付费获得,我记得在某个地方读到过,它也将在公共领域可用。让用户输入他们的邮政编码,在数据库中查找他们的纬度和经度,然后使用该邮政编码执行另一个查询,该查询计算与他们最近的供应商,可能在一定的里程内。您也许可以创建一个存储过程来在db上完成所有这些操作。This post似乎有一些关于如何做到这一点的细节。

票数 0
EN

Stack Overflow用户

发布于 2011-01-18 02:23:18

如果你想让它更快,那么就预先计算出邮政编码之间在一定半径内的距离--参见以下内容:

Calculate distance between zip codes and users

这在您的情况下应该工作得很好,除非您认为用户会愿意走超过100英里来购买产品??

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4716183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档