Ich habe bereits einen Geocode-API auf Google-Konsole erstellt. Ich habe ein Suchfeld mit der Google Autocomplete in meiner Website eingegeben und ich möchte eine bestimmte Stadt zu meinem Geocode API und integrieren sie in meine Web-App. Die stadt ist: toulouse, Land: Frankreich.Google automatische Vervollständigung zu einer bestimmten Stadt
Wenn der Kunde seine Adresse in das Suchfeld eingibt, möchte ich nur alle Adressen in der Stadt Toulouse suchen, basierend auf dem Zentrum von Toulouse mit einer Entfernung von 20 km.
Hier ist mein Code auf der Datei-basierte 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;
}
Es gibt einen Parameter 'Radius'. - Definiert den Abstand (in Metern), innerhalb dessen die Ergebnisse zurückgegeben werden. Der maximal zulässige Radius beträgt 50 000 Meter. Beachten Sie, dass der Radius nicht enthalten sein muss, wenn rankby = Abstand (wie unter Optionale Parameter unten beschrieben) angegeben ist. Überprüfen Sie diesen Link https://developers.google.com/places/web-service/search – Stallion
Ich glaube nicht, dass dies mit dem Radius-Parameter in Places API verwandt ist, der obige Code verwendet nur die Geocodierungs-API, und es ist nicht klar zu mir, was OP bedeutet mit "Google Autocomplete", aber der Code zeigt keine Spur der Verwendung der Places Autocomplete API. – miguev