如何在谷歌地图API中找到最近的城市
Posted
技术标签:
【中文标题】如何在谷歌地图API中找到最近的城市【英文标题】:How to find the nearest cities in Google map API 【发布时间】:2012-07-25 12:14:40 【问题描述】:我想找到我为example 提供的澳大利亚最近的城市。在此查看示例。我尝试使用 Google API 但没有用。我怎样才能做到这一点。你能帮帮我吗?
代码是
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var request =
location: fenway,
radius: 500,
types: ['store']
;
var service = new google.maps.places.PlacesService(map);
service.search(request, callback);
function callback(results, status)
if (status == google.maps.places.PlacesServiceStatus.OK)
for (var i = 0; i < results.length; i++)
var lat = results[i].geometry.location.lat();
var geocoder = new google.maps.Geocoder();
var lng = results[i].geometry.location.lng();
var latlng = new google.maps.LatLng(lat, lng);
geocoder.geocode(
'latLng': latlng
, function (result, status1)
if (status == google.maps.GeocoderStatus.OK)
if (result[1])
console.log(result[1]);
else
alert("Geocoder failed due to: " + status1);
);
我想靠近城市,而不是商店等。我必须找到澳大利亚的郊区,靠近我给的郊区
【问题讨论】:
我添加了我尝试过的代码。你有什么建议吗? 之前也被问过很多次了:***.com/… 【参考方案1】:我编写了一个代码 sn-p,通过结合 Google Maps Geocoding API 和 GeoNames.org API(除了 strong>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 的更多信息,请访问以下网址:
https://developers.google.com/maps/documentation/geocoding/intro#GeocodingResponses http://www.geonames.org/export/web-services.html【讨论】:
一个 7 年的旧帖子仍然新鲜的 btt 地理名称的洞察力是获得附近城市的最准确的服务以上是关于如何在谷歌地图API中找到最近的城市的主要内容,如果未能解决你的问题,请参考以下文章
在谷歌地图 api v3 中将地区、城市、州、国家/地区转换为纬度和经度?