2012-11-17 53 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內置了空間支持。我認爲這對這個簡單的問題是一個矯枉過正。 –