Outils pour utilisateurs

Outils du site


informatique:php:geocoding

Geocoding

Date de création : 2022/10/09 17:19

 
<?php
 
/**
 * Exemple de Json en entrée
 */
$placeAddress = '[
    {
        "street":"24 route des Acacias",
        "zipCode":"1227",
        "city":"Geneve"
    }
 
]';
 
/**
 * Function geocoding
 * @description: convert address to decimal coordinates
 * @param json $data
 * @return array $result :
 * Array (
 *        [0] => Array (
 *                      [latitude] => 6.1357885
 *                      [longitude] => 46.1911115
 *                      [url] => https://www.google.com/maps/@46.1911115,6.1357885,20.04z
 *                   )
 *        )
 */
 
function geocoding($data)
{
 
    $result = array();
 
    $placeAddress = json_decode($data, true);
 
    /**
     *  pour chaque élément du tableau on nettoie l'adresse et on remplit
     *  le tableau result
     */
    foreach ($placeAddress as $key => $value) {
        echo "<br> foresach - " . implode(" ", $value) . "<br>";
        $address = cleaningAddress(implode(" ", $value));
 
        //Appelle l'API de Google avec l'adresse formatée
        $response = call_api($address);
 
        // If Status Code is ZERO_RESULTS, OVER_QUERY_LIMIT, REQUEST_DENIED or INVALID_REQUEST
        if ($response['status'] != 'OK') {
            echo "status Erreur => " . $response['error_message'];
            return null;
        }
 
        // Extract data
        $geometry = $response['results'][0]['geometry'];
        $longitude = $geometry['location']['lng'];
        $latitude = $geometry['location']['lat'];
        // contruction de l'adresse google map
        $url = "https://www.google.com/maps/@" . $latitude . "," . $longitude . ",20.04z";
 
        $array = array(
            'latitude' => $longitude,
            'longitude' => $latitude,
            'url' => $url
        );
        // remplit le tableau $result
        array_push($result, $array);
    }
 
    return $result;
}
 
/**
 * Function Call API
 * @description   Call Google Map API to convert address
 * @param string $address address without space ex: "24%20route%20des%20acacias%201227%20geneve"
 * @return json
 */
 
function call_api($address)
{
    $apikey = "votre_API-Key";
    $geocoding_url = "https://maps.googleapis.com/maps/api/geocode/json?address=" . $address . "&key=" . $apikey;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $geocoding_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    return $response = json_decode(curl_exec($ch), true);
}
 
/**
 * Function cleaningAddress
 * @description: replace space with %20
 * @param string $address
 * @return string
 */
function cleaningAddress($address)
{
    $addressCleaning = str_replace(" ", "%20", $address);
    return $addressCleaning;
}
 
$result = geocoding($placeAddress);
print_r($result);

Cette page a pour source partielle ou intégrale la ou les page(s) suivante(s):


Page dans la catégorie:

informatique/php/geocoding.txt · Dernière modification : 2022/10/09 17:20 de john

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki