PHPAscal
Accueil Programmation web Optimisation Liens Fonctionnement du site À propos de l'auteur Plan du site
Programmation web CSS HTML PHP Javascript RSS SQL SSH, serveur linux Outils
  PHPascal a 95 articles


Recherche



Modifier la couleur:



Valid XHTML 1.0 Transitional

CSS Valide !

Programmation web / PHP / Trouver latitude et longitude

Trouver la latitude et longitude via l'API de Google Map

Voici une fonction qui vous permet de trouvé la latitude et longitude d'un emplacement à partir de son adresse via l'API de Google Map.



/**
 * trouver latitude et longitude via l'API de GOOGLE MAP
 *
 * @author PHPascal
 * @since Wed Aug 11 13:03:12 EDT 2010
 * @param $adresse = adresse a rechercher avec le numéro de rue: la rue, la ville et le code postal
 *                                      exemple : 8028 rue Foucher, Montréal, H3L 3H3
 * @param $cle_google = cle de google pour utiliser l'API
 * @return array avec $reponse['latitude'] et $reponse['longitude']
 */
function trouver_coordonner($adresse,$cle_google)
{
    // initialisation
    $retour['latitude'] = 0;
    $retour['longitude'] = 0;
    $retour['erreur'] = "";

    define("MAPS_HOST", "maps.google.com");
    define("KEY", $cle_google);


    // Initialize delay in geocode speed
    $delay = 0;
    $base_url = "http://" . MAPS_HOST . "/maps/geo?output=xml" . "&key=" . KEY;

    $geocode_pending = true;

    while ($geocode_pending)
    {

        $request_url = $base_url . "&q=" . urlencode($adresse);
        $xml = simplexml_load_file($request_url) or die("url not loading");

        $status = $xml->Response->Status->code;
        if (strcmp($status, "200") == 0)
        {
            // Successful geocode
            $geocode_pending = false;
            $coordinates = $xml->Response->Placemark->Point->coordinates;
            //$coordinatesSplit = split(",", $coordinates);
            $coordinatesSplit = preg_split('[,]', $coordinates);

            $retour['latitude'] = mysql_real_escape_string($coordinatesSplit[1]);
            $retour['longitude'] = mysql_real_escape_string($coordinatesSplit[0]);


        } else if (strcmp($status, "620") == 0) {
            // sent geocodes too fast
            $delay += 100000;
        } else {
            // failure to geocode
            $geocode_pending = false;
            $retour['erreur'] .= "Address " . $address . " failed to geocoded. ";
            $retour['erreur'] .= "Received status " . $status . "<br>\n";
        }
        usleep($delay);
    }


    return $retour;
}



J'ai créé cette fonction a partir des indication donné sur le site de Google. Pour plus d'informations regarder directement la documentation de Google :  http://code.google.com/intl/fr/apis/maps/articles/phpsqlgeocode.html
Article écrit le 13 août 2010

Autres articles sous la même catégorie


Pascal Dubreuil | © PHPascal.com 2012
Temps d'exécution : 0.1772 sec
Fait au Québec