sección script página puede habilitar gratis google esta ejemplos correctamente cargar google-maps-api-3 geolocation google-api geocoding jquery-gmap3

google-maps-api-3 - página - habilitar la google maps javascript api en la sección de api de la google api console



Dirección de codificación geográfica: obtener el distrito de una determinada dirección(API de Google) (2)

Tengo una base de datos con direcciones exactas (calle, no, ciudad, región / área, país). Sin embargo, me preguntaba si había una forma de usar Google API para obtener el distrito de una ciudad (por ejemplo, "Manhattan") si estamos en Nueva York.

Toda la otra información que ya tengo en la base de datos, así que solo necesitaría el distrito si hay uno (por supuesto, esto será solo en ciudades más grandes) ...

ACTUALIZAR:

Encontré esta función en http://www.techques.com/question/1-3151450/Google-geolocation-API---Use-longitude-and-latitude-to-get-address y traté de cambiar formatted_address a sublocality ( incluso otros como short_name, etc.) pero no devuelve nada ... ¡cualquier ayuda sería muy apreciada! ¡¡Gracias!!

function reverse_geocode($lat, $lon) { $url = "http://maps.google.com/maps/api/geocode/json?latlng=$lat,$lon&sensor=false"; $data = json_decode(file_get_contents($url)); if (!isset($data->results[0]->formatted_address)){ return "unknown Place"; } return $data->results[0]->formatted_address; }


Encontrará esta información dentro de una solicitud de geocodificación, cuando exista un resultado con los types establecidos en

[ "sublocality", "political" ]

Ejemplo: 317 Madison Ave, Nueva York

Modificación de la función anterior para facilitar el acceso a los componentes de respuesta:

/** * @param $a mixed latitude or address * @param $b mixed optional longitude when $a is latitude * @return object geocoding-data **/ function geocode($a, $b=null) { $params=array(''sensor''=>''false''); if(is_null($b)) { $params[''address'']=$a; } else { $params[''latlng'']=implode('','',array($a,$b)); } $url = ''http://maps.google.com/maps/api/geocode/json?''.http_build_query($params,'''',''&''); $result=@file_get_contents($url); $response=new StdClass; $response->street_address = null; $response->route = null; $response->country = null; $response->administrative_area_level_1 = null; $response->administrative_area_level_2 = null; $response->administrative_area_level_3 = null; $response->locality = null; $response->sublocality = null; $response->neighborhood = null; $response->postal_code = null; $response->formatted_address = null; $response->latitude = null; $response->longitude = null; $response->status = ''ERROR''; if($result) { $json=json_decode($result); $response->status=$json->status; if($response->status==''OK'') { $response->formatted_address=$json->results[0]->formatted_address; $response->latitude=$json->results[0]->geometry->location->lat; $response->longitude=$json->results[0]->geometry->location->lng; foreach($json->results[0]->address_components as $value) { if(array_key_exists($value->types[0],$response)) { $response->{$value->types[0]}=$value->long_name; } } } } return $response; } //sample usage echo ''<hr/>''.geocode(''317 Madison Ave,New York City'')->sublocality; //Manhattan echo ''<hr/>''.geocode(''foobar'')->status; //ZERO_RESULTS echo ''<hr/>''.geocode(''40.689758, -74.04513800000001'')->formatted_address; //1 Liberty Is, Brooklyn, NY 11231, USA


Puede acceder a la sublocalidad de esta manera:

function reverse_geocode($lat, $lon) { $url = "http://maps.google.com/maps/api/geocode/json?latlng=$lat,$lon&sensor=false"; $data = json_decode(file_get_contents($url)); if (!isset($data->results[0]->address_components)){ return "unknown Place"; } if ($data->results[0]->address_components[2]->types[0]=="sublocality") { $return_array[''type'']="sublocality"; $return_array[''sublocality_long_name'']=$data->results[0]->address_components[2]->long_name; $return_array[''sublocality_short_name'']=$data->results[0]->address_components[2]->short_name; return $return_array; } }