2011-11-18 130 views
1

我期待在我的網站上爲我的serach引擎做一個選項,以便用戶可以搜索設定距離內的項目,例如,搜索10英里或20英里內的物品等。我想知道如何做到這一點?搜索引擎的距離

用戶必須輸入他們的郵編,而我也有郵編的位置,一旦他們擊中搜索需要一個工作的距離之間的兩個位置之間的距離,然後顯示結果按距離排序;因爲最近的項目是第一個結果。在使用地圖「獲取路線」選項來計算英里距離時,是否存在Google API?或者我可以添加到我的數據庫?

+0

的可能重複的[PHP/MySQL的郵政編碼鄰近搜索](http://stackoverflow.com/questions/2410529/php-mysql-zip-code-proximity-search) –

+0

事情你正在尋找的是一個地理空間搜索。如果您可以告訴我們您選擇的語言和數據庫引擎,我們可能會提出有價值的建議。 – Charles

+0

謝謝,即時通訊使用PHP和MySQL –

回答

0

Google地理編碼API提供郵政編碼查詢功能,可以提供即使只有一個郵政編碼作爲地址的國家,城市,緯度/經度。一旦你有了經度/緯度,那麼你可以輕鬆計算距離並對結果進行排序。

http://code.google.com/apis/maps/documentation/geocoding/#GeocodingRequests

注意:您只能使用地理編碼API與谷歌地圖相結合;禁止在地圖上顯示地理編碼結果。有關允許使用的完整詳細信息,請參閱鏈接。

所以,如果,例如,如果您請求的郵政編碼94043查找調用以下網址:

http://maps.googleapis.com/maps/api/geocode/json?address=94043&sensor=false 

這將與JSON結果如下列:

{ 
    "results" : [ 
     { 
     "address_components" : [ 
      { 
       "long_name" : "94043", 
       "short_name" : "94043", 
       "types" : [ "postal_code" ] 
      }, 
      ... 
      "location" : { 
       "lat" : 37.4284340, 
       "lng" : -122.07238160 
      }, 
      "location_type" : "APPROXIMATE", 
     ... 
    "status" : "OK" 
} 

如果您無法使用谷歌API由於某些原因,這裏是非Google Geocoder API和服務列表: