9
votes

Coordonnées géographiques aux noms de rue

est quelque chose (avec un repos API sera génial) pour obtenir le nom de la rue correspondant à une coordonnée géographique? Je pense que le nom est géocodé, google a-t-il cette API? GI PHP Developer.

ex. xxx

de sorte que la sortie de la fonction est le nom de la rue, le code postal et la ville. Merci pour toutes les exemples d'aide et de scripts!


1 commentaires

Ce que vous voulez, ce n'est pas le géocodage, mais inverse géocodage ;-) (voir Secure.Wikimedia.org/wikipedia/fr/wiki/Reverse_Geocoding )


4 Réponses :


14
votes

Oui, utilisez simplement la fonction "Geocodage inverse" dans l'API Google Maps: http://code.google.com/apis/maps/documentation/geocoding/#ReverseSocode

Voici quelques exemples de code: P>

$lat="38.115583";
$long = "13.37579";

$url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=$lat,$long&sensor=false";

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_ENCODING, "");
$curlData = curl_exec($curl);
curl_close($curl);

$address = json_decode($curlData);
print_r($address);


1 commentaires

Il y a beaucoup de restrictions sur l'API Google Maps. Par exemple. que vous ne pouvez pas l'utiliser sans la carte ou que vous êtes limité à une quantité de requêtes par jour.



0
votes

Comme @Elijah mentionne, il y a beaucoup de restrictions sur les cartes API que j'ai données dans ma dernière réponse. Vous êtes seulement censé l'utiliser pour les applications Google Maps. Si c'est un problème, vous pouvez également essayer l'API AdWords. Il a également un service similaire mais Google charge pour cela, il y a donc moins de restriction.


0 commentaires

2
votes

Vous pouvez également jeter un coup d'œil à l'aide de Yahoo! 'S Placefinder API, qui offre un inverse géocodage. Un exemple minimal d'un appel à l'API (lui demandant de retourner le format de données léger-interchange du jour, JSON ) pourrait regarder Comme: xxx pré>

sortire le premier résultat (j'espère y y un!) qui contient des propriétés telles que rue code>, postal code> et Ville Code>. P>


Une autre façon d'utiliser l'API de Placefinder est via Yahoo! 's YQL API, qui vous permet d'utiliser des requêtes de type SQL contre" Tables de données "(souvent, d'autres API). P>

Une telle requête pourrait ressembler à: P> xxx pré>

( Essayez ceci dans l'interface de console YQL ) P>

Pour faire un appel à YQL avec cette requête, de PHP, est très similaire à l'exemple précédent et doit imprimer les mêmes informations. P>

$query    = 'SELECT * FROM geo.placefinder WHERE text="55.948496,-3.198909" AND gflags="R"';
$url      = 'http://query.yahooapis.com/v1/public/yql?q='.urlencode($query).'&format=json';
$response = json_decode(file_get_contents($url));
$location = $response->query->results->Result;
print_r($location);


0 commentaires

3
votes

Voici ma fonction PHP que j'ai utilisée pour faire une recherche de géocode inversée pour une adresse de rue à l'aide de l'API Google Map. Remarque, cet exemple obtient la sortie de Google à Json, mais je fais une analyse simple dans PHP.

/*
 * Use Google Geocoding API to do a reverse address lookup from GPS coordinates
 */
function GetAddress( $lat, $lng )
{   
    // Construct the Google Geocode API call
    //
    $URL = "http://maps.googleapis.com/maps/api/geocode/json?latlng=${lat},${lng}&sensor=false";

    // Extract the location lat and lng values
    //
    $data = file( $URL );
    foreach ($data as $line_num => $line) 
    {
        if ( false != strstr( $line, "\"formatted_address\"" ) )
        {
            $addr = substr( trim( $line ), 22, -2 );
            break;
        }
    }

    return $addr;
}


0 commentaires