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