2012-11-17 49 views
0

我有我的网站上的本地企业数据库。如何根据距离特定地址的距离过滤地址数据库的结果?

基本上我需要添加一个功能,用户可以输入自己的地址和“最大距离”过滤器,只有具有最大的距离内从结果他们的地址返回。

的库/程序/ API /有我需要的功能?

我已经研究了谷歌地图API和,这是不可行的因为它们对距离矩阵计算配额是令人难以置信的限制性的,在每天2500个元素。

回答

0

你可以得到两个地址的经纬度(使用谷歌地图API地址解析),然后你就可以与MySQL查询比较。
检查这个Google search page为堆叠交换问题,您指定的距离或距离的查找中如何 点列表。

1

您需要使用您的数据库的“空间”功能。如果您的数据库服务器不支持它,请尝试为它找到一个“空间”插件。我不知道用mySql是否可能。使用SQL Server和PostGIS。

如果你的数据库是SQL Server 2008中,例如:

一个“地理”字段添加到地址表和与每个本地商家的地理座标(纬度,经度)补充一点:

INSERT INTO @addressTable (GeographyColumn) VALUES (geography:STGeomFromText('POINT(longitude,latitude)' , 4326)) 

(价值4326表示WGS84坐标系统(这是由您的GPS))quering创建一个对象与客户端的坐标时

然后:

DECLARE @client geography 
SET @client = geography::STPointFromText('POINT (longitude, latitude)', 4326) 

SELECT * 
FROM addressTable 
ORDER BY Location.STDistance(@client) 
+0

MySQL内置了空间支持。我认为这对这个简单的问题是一个矫枉过正。 –