2012-04-16 3 views
2

Я работаю над проектом php, где хочу найти и сохранить 3 города в диапазоне 100 км от указанного места в моей базе данных. Для этого я думал о Google Geocoding. Я не могу ли я использовать это или нет. Но я нашел строку на странице «Условия и положения» для API геокодирования:Могу ли я использовать Google API для поиска ближайших городов?

API геокодирования может использоваться только в сочетании с картой Google; результаты геокодирования без отображения их на карте запрещены.

Что это значит? Могу ли я использовать API для извлечения городов? Кто-нибудь есть идеи?

+0

Привет, вы нашли города? – muthu

+0

@muthu да, я получил один. Но я не использую API геокодирования. – Subhra

+0

Знаете ли вы, как вы находите города? – muthu

ответ

4

Мне кажется, что это очень ясно:

Да, вы можете использовать API геокодирования, если вы покажете ближайшие города на карте Google.

Нет, вы не можете использовать API геокодирования, если вы не увидите ближайших городов на карте Google.

Нет никакой разницы, если вы будете хранить результаты и использовать их позже.

кстати. обратите внимание, что у Yahoo есть такая же политика использования.

Обновление: Вы можете использовать GeoNames выглядеть here

+0

Спасибо Антонио за ваш ответ. Можете ли вы предложить мне альтернативную идею? – Subhra

+1

И вопрос в том, как найти ближайший город в указанном месте, не отображая его на карте? Ну, я действительно не знаю, почему такая проблема отображает результаты на карте? Пожалуйста, обновите свой вопрос или создайте новый, возможно, кто-то еще узнает –

0

Все это сводится к тому, чего вы хотите достичь. Поскольку вам все еще нужно использовать базу данных для хранения этого местоположения, не лучше ли было бы получать и хранить данные (лат и долго) области, которую ваше приложение пытается охватить в базе данных.

+0

Да, вы правы. Для этого мне нужно будет хранить все города мира в базе данных с широтой и долготой, а затем мне придется рассчитать расстояние, используя некоторую формулу. Я прав? Но где я могу получить эту огромную базу данных? Есть ли у вас какие-либо идеи? – Subhra

+1

Вот данные, и это не огромные данные для всех стран - это 216 МБ: http: //download.geonames.org/export/dump/ –

+0

@AntonioBakula Спасибо, что поделились им. – Subhra

2

Я написал фрагмент кода, который позволяет получить все близлежащие города, комбинируя API Google Maps геокодирования и 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, следующий URL,:

Смежные вопросы