2012-04-16 78 views
2

我正在開發一個php項目,我想從中找到並存儲從指定位置到我的數據庫的100 KM範圍內的3個城市。我在想Google API地理編碼。我不知道我是否能夠使用它。但是我在地理編碼API的條款和條件頁面中找到了一行:我可以使用Google API查找最近的城市嗎?

地理編碼API只能與Google地圖結合使用;禁止在地圖上顯示地理編碼結果。

這是什麼意思?我可以使用API​​獲取城市嗎?有沒有人有任何想法?

+0

你好,你找到了城市? – muthu 2012-07-24 09:05:56

+0

@muthu是的,我得到了一個。但我沒有使用Geocoding API。 – Subhra 2012-07-24 13:41:06

+0

你知道你是如何找到城市的? – muthu 2012-07-25 13:40:38

回答

4

在我看來,這是很清楚的:

是的,你可以使用地理編碼API,如果你會顯示在谷歌地圖最近的城市。

不,如果您不會在Google地圖上顯示最近的城市,則無法使用地理編碼API。

如果您將存儲結果並稍後使用,則沒有區別。

btw。請注意,雅虎有相同的使用政策。

更新:您可以使用GeoNameshere

+0

上提出另一個問題,謝謝安東尼奧的回答。你能提出一個替代的想法嗎? – Subhra 2012-04-16 17:25:14

+1

而問題是如何找到最近的城市指定的位置,而不顯示在地圖上?那麼我真的不知道,爲什麼在地圖上顯示這樣的問題呢?請更新您的問題或創建一個新的問題,也許別人會知道 – 2012-04-16 18:29:44

0

這一切都歸結爲你想要達到的目標。由於您仍然需要使用數據庫來存儲此位置,因此,獲取並存儲應用程序要在數據庫中覆蓋的區域的數據(經緯度和長度)會更好嗎?

+0

是的你是對的。爲此,我必須將世界上所有的城市都存儲在經緯度數據庫中,然後使用一些公式計算距離。我對嗎?但是從哪裏可以獲得龐大的數據庫?你有什麼主意嗎? – Subhra 2012-04-16 17:29:11

+1

這裏是數據,它並不是很大,所有國家的數據是216 MB:http://download.geonames。org/export/dump/ – 2012-04-16 18:41:42

+0

@AntonioBakula感謝您分享它。 – Subhra 2012-04-17 05:36:31

2

我寫的代碼片段,您可以通過組合谷歌地圖API地理編碼檢索附近的所有城市GeoNames.org API(除了一file_get_contents你也可以做一個cURL請求)。

/* 
* Get cities based on city name and radius in KM 
*/ 

// get geocode object as array from The Google Maps Geocoding API 
$geocodeObject = json_decode(file_get_contents('https://maps.googleapis.com/maps/api/geocode/json?address={CITY NAME},{COUNTRY CODE}'), true); 

// get latitude and longitude from geocode object 
$latitude = $geocodeObject['results'][0]['geometry']['location']['lat']; 
$longitude = $geocodeObject['results'][0]['geometry']['location']['lng']; 

// set request options 
$responseStyle = 'short'; // the length of the response 
$citySize = 'cities15000'; // the minimal number of citizens a city must have 
$radius = 30; // the radius in KM 
$maxRows = 30; // the maximum number of rows to retrieve 
$username = '{YOUR USERNAME}'; // the username of your GeoNames account 

// get nearby cities based on range as array from The GeoNames API 
$nearbyCities = json_decode(file_get_contents('http://api.geonames.org/findNearbyPlaceNameJSON?lat='.$latitude.'&lng='.$longitude.'&style='.$responseStyle.'&cities='.$citySize.'&radius='.$radius.'&maxRows='.$maxRows.'&username='.$username, true)); 

// foreach nearby city get city details 
foreach($nearbyCities->geonames as $cityDetails) 
{ 
    // do something per nearby city 
} 

要小心您的要求量,因爲API的有限

對API的訪問欲瞭解更多信息,以下網址:

相關問題