Использование Google Places API, чтобы получить близлежащие города для данного места [закрыто]
Я пытаюсь написать Java-приложение, которое, учитывая город и радиус, возвращает все рядом города. Я думал, что Google Maps API сможет это сделать, но мне не повезло с API Places, он просто возвращает достопримечательности (например, рестораны,...). Есть ли способ сделать это с помощью Google API или есть какой-то другой API (или способ сделать это), который вы бы порекомендовали?
2 ответов
вы, вероятно, правы, что вы не захотите использовать API Places. Вы можете увидеть, есть ли способ использовать геокодирование/обратное геокодирование, чтобы получить то, что вы хотите. См.http://code.google.com/apis/maps/documentation/geocoding/.
в зависимости от ваших требований к производительности и точности вы не сможете легко сделать это (особенно глобально) с помощью Google Maps API (или любого другого бесплатного инструмента), но вы можете получить что-то вроде в основном-работает, особенно если у вас есть географическое ограничение (например, только США), которое может упростить вещи.
Я написал фрагмент кода, который позволяет получить все близлежащие города путем объединения Google Maps геокодирование 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 посетите следующее URL-адреса: