2011-03-21 88 views
2

我正在一個網站上,允許用戶找到我們最近的汽車旅館位置(其中有26個在美國)。我有他們所在城市的名單。找到最近的主要城市

我想顯示最近的位置,當用戶進入我們的頭版上。例如,如果用戶來自新澤西州的紐瓦克,他將顯示來自紐約市汽車旅館的圖像,如果用戶來自加利福尼亞州聖何塞,他將顯示舊金山的圖像。

這樣做的最好方法是什麼?有沒有人知道網絡上的任何示例,顯示我想要做什麼?這甚至有可能嗎?

我看到了Groupon和LivingSocial的使用這個,所以我想爲什麼不我給它一個鏡頭。 :)

+0

看看一側的相關欄,一對夫婦的人的那站了出來:http://stackoverflow.com/questions/4392745/finding-nearest-city-like-oodle-com/4392950#4392950 HTTP ://stackoverflow.com/questions/1570670/geocoding-grouping-multiple-addresses-into-major-cities – 2011-03-21 21:27:29

+0

http://www.lowes。com在頁面頂部有相同的功能,他們列出了最近的商店 – ServAce85 2012-01-07 11:49:05

回答

0

您可以試試Geolite city。它是免費的(帶有歸屬條款),或者可以被購買。這就減少了「找到距離用戶的IP地址最近的城市」問題,以「找到距離已知城市最近的城市」。

同一家公司提供了一個城市的數據庫,其中除其他外包含經度/緯度。這應該夠了吧。

0

我用這個代碼從表中計算的GoogleMaps經度和緯度的距​​離的地址。

地理編碼是返回的緯度和經度的從給定的一個地址字符串谷歌地圖API的陣列,在一個拉鍊下面的情況下的功能。您的位置的表格必須包含lat和lng列。在這個例子中,我使用了十進制(8,5)類型,但你也可以使用點列類型。

$starting_location = geocode($zip); 
$distance = '(3959 * acos(cos(radians('.$starting_location['latitude'].')) * cos(radians(lat)) * cos(radians(lng) - radians('.$starting_location['longitude'].')) + sin(radians('.$starting_location['latitude'].')) * sin(radians(lat))))'; 
$location_row = query('SELECT location_id,addr,addr2,city,state,zip,phonenumber,'.$distance.' AS distance FROM location_info WHERE '.$distance.' is not null ORDER BY distance LIMIT 1'); 

糾正我,如果我鏈接到另一個人的回答不正確,但我覺得我得到了這個問題,我的方向:Fastest Way to Find Distance Between Two Lat/Long Points

0

可以使用上MaxMind.com免費的數據(我beleive你可以支付更精確的數據庫)獲取最近的城市,以一個IP地址。如果你能得到的拉/長爲城市和比較它拉/長爲每個汽車旅館你贏:)

0

你需要的是存儲汽車旅館的緯度/經度座標,然後讓用戶在瀏覽器中鍵入他的位置最有可能是一個郵政編碼,然後你想使用harvesine formule來計算用戶和汽車旅館之間的距離,以顯示附近的汽車旅館。或者您可以使用IP來協調像IP2location這樣的服務來獲取用戶位置。