<?php
$locationArray['pointA'] = "9, rue Tronchet, 69006 Lyon";
$locationArray['pointB'] = "Gare de Lyon, Place Louis-Armand, 75571 Paris";
$googleApiKey = "AIzaSyApHwwfDREvHlEZDMYXpYKSt5RlXiYrjRo";
$positionArray = [];
foreach($locationArray as $point => $location){
$locationUrl = urlencode($location);
// $json = file_get_contents("https://maps.google.com/maps/api/geocode/json?key=" . $googleApiKey . "&components=locality:" . $locationUrl);
$json = file_get_contents("https://maps.googleapis.com/maps/api/geocode/json?address=". $locationUrl ."&sensor=true");
$googleData = json_decode($json);
echo "<br>";
var_dump($googleData->status);
if ($googleData->status == 'OK') {
$result = $googleData->results[0];
$positionArray[$point]['lat'] = $result->geometry->location->lat;
$positionArray[$point]['lng'] = $result->geometry->location->lng;
}
}
var_dump($positionArray);
// Radius in Km
$radiusEarthKm = 6371.07103;
// Convert degrees to radians
$radiusLatFrom = $positionArray['pointA']['lat'] * (pi() /180);
$radiusLatTo = $positionArray['pointB']['lat'] * (pi() /180);
// Radian difference (latitudes)
$latDiff = $radiusLatTo - $radiusLatFrom;
// Radian difference (longitudes)
$lngDiff = ($positionArray['pointB']['lng'] - $positionArray['pointA']['lng']) * (pi() /180);
// Distance
$distance = 2 * $radiusEarthKm * sin(sqrt(sin($latDiff/2) * sin($latDiff/2) + cos($radiusLatFrom) * cos($radiusLatTo) * sin($lngDiff/2)*sin($lngDiff/2)));
echo "Real distance de <b>".$locationArray['pointA']."</b> à <b>".$locationArray['pointB']."</b> is <b>".$distance."</b>.";
?>