Recientemente comencé a trabajar con la API de Google Maps y necesito convertir los cálculos de distancia en una función para que pueda usarse en cualquier parte de mi código, pero no tengo idea de cómo hacerlo...
Así es como se hacen los cálculos de distancia:
$keyApi = 'xxxxx';// Valor oculto por razones de seguridad
$origin = $adresscep; $destination = $deliverycep; $url = 'https://maps.googleapis.com/maps/api/distancematrix/json?origins=' . $origin. '&destinations='. $destination .'&mode=driving&language=en-US&sensor=false&key=' . $keyApi; $ch = curl_init($url); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_HTTPHEADER , array( 'Accept: application/json' ) ); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $url); $result = curl_exec( $ch ); $result = json_decode( $result, true ); $distanceCalculation = $result['rows'][0]['elements'][0]['distance']['value'];// Devuelve INT en metros.
$remains= (double)$distanceCalculation%1000; if($distanceCalculation<=1000) $distanceCalculation=1000;// Por debajo o igual a 1000m hace $distanceCalculation = 1000
if($remains>=500) {// Por encima de 500m en decimales, lo redondea al siguiente valor INT
$distanceCalculation= $distanceCalculation/1000; $distanceCalculation= ceil($distanceCalculation); $distanceCalculation*=1000; } else {// Por debajo de 500m en decimales, lo redondea al valor INT anterior
$distanceCalculation= $cdistanceCalculation/1000; $distanceCalculation= floor($distanceCalculation); $distanceCalculation*=1000;