5

我正在做一个 php 项目,我想从指定位置查找 100 公里范围内的 3 个城市并将其存储到我的数据库中。我正在为此考虑使用 Google API 地理编码。我不知道我是否能够使用它。但是我在 Geocoding API 的条款和条件页面中找到了一行

地理编码 API 只能与谷歌地图一起使用;禁止在未在地图上显示的情况下对结果进行地理编码。

这是什么意思?我可以使用 API 来获取城市吗?有人知道吗?

4

3 回答 3

6

在我看来,这很清楚:

是的,如果您要在 Google 地图上显示最近的城市,您可以使用 Geocoding API。

不,如果您不在 Google 地图上显示最近的城市,则不能使用 Geocoding API。

如果您将存储结果并在以后使用它没有区别。

顺便提一句。请注意,雅虎有相同的使用政策。

更新:您可以使用GeoNames这里

于 2012-04-16T13:22:45.577 回答
3

我编写了一个代码片段,允许您通过结合Google Maps Geocoding APIGeoNames.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 的更多信息,请访问以下网址:

于 2015-12-03T13:18:48.873 回答
0

这一切都归结为您想要实现的目标。由于您仍然需要使用数据库来存储此位置,因此在数据库中获取和存储应用程序试图覆盖的区域的数据(纬度和经度)不是更好吗?

于 2012-04-16T13:14:42.647 回答