我已经在谷歌控制台上创建了一个地理编码API。我在我的网站上有一个带有谷歌自动完成功能的搜索框输入,我想将一个特定的城市设置为我的地理编码api并将其集成到我的网络应用程序中。这个城市是:toulouse,国家:法国。
当客户在搜索框中输入他的地址时,我希望它只搜索图卢兹市的所有地址,基于距离为20公里的图卢兹中心。
以下是基于Function.php文件的代码
public function geoCoding($lat='',$lng='')
{
$protocol = isset($_SERVER["https"]) ? 'https' : 'http';
if ($protocol=="http"){
$url = "https://maps.googleapis.com/maps/api/geocode/json?latlng=".$lat.",".$lng."&sensor=true";
} else $url = "https://maps.googleapis.com/maps/api/geocode/json?latlng=".$lat.",".$lng."&sensor=true";
$google_geo_api_key=getOptionA('google_geo_api_key');
if (!empty($google_geo_api_key)){
$url=$url."&key=".urlencode($google_geo_api_key);
}
$data = @file_get_contents($url);
if (!empty($data)){
$result = json_decode($data,true);
//dump($result);
if (!isset($result['results'])){
return false;
}
if (is_array($result['results']) && count($result['results'])>=2){
$location = array();
foreach ($result['results'][0]['address_components'] as $component) {
switch ($component['types']) {
case in_array('street_number', $component['types']):
$location['street_number'] = $component['long_name'];
break;
case in_array('route', $component['types']):
$location['street'] = $component['long_name'];
break;
case in_array('neighborhood', $component['types']):
$location['street2'] = $component['long_name'];
break;
case in_array('sublocality', $component['types']):
$location['sublocality'] = $component['long_name'];
break;
case in_array('locality', $component['types']):
$location['locality'] = $component['long_name'];
break;
case in_array('administrative_area_level_2', $component['types']):
$location['admin_2'] = $component['long_name'];
break;
case in_array('administrative_area_level_1', $component['types']):
$location['admin_1'] = $component['long_name'];
break;
case in_array('postal_code', $component['types']):
$location['postal_code'] = $component['long_name'];
break;
case in_array('country', $component['types']):
$location['country'] = $component['long_name'];
$location['country_code'] = $component['short_name'];
break;
}
}
return $location;
}
}
return false;
}
答案 0 :(得分:1)
您的说明听起来好像是在使用地图JavaScript API的地方信息库中的Search Box小部件,但您的代码仅显示在地理编码API网络服务中使用reverse geocoding。
由于我认为只有前者才有意义,因此我冒昧地对您提供的以下功能请求感兴趣,这些功能允许您将自动填充功能限制在某个城市:
目前,我所知道的选项是:
bounds
设置为城市的搜索框(可以从Geocoding API获取),并依赖窗口小部件来优先(不限制)这些边界内的建议,或