Script per distanza indirizzi [era: Script Php che non capisco se funzioni !]

  • Creatore Discussione Creatore Discussione vitelli
  • Data di inizio Data di inizio

vitelli

Utente Attivo
23 Mar 2012
41
0
0
Ragazzi, ho questo piccolo script in php che non fa altro che restituire la distanza tra 2 indirizzi passati e la calcola tramite google map..ora quello che vedo è che fino a qualche giorno fa lo script funzionava..ora improvvisamente mi da sempre problemi di "Indirizzo Non trovato"..lo script è questo..sapete quale possa essere il problema????

PHP:
<?php
function get_driving_information($start, $finish, $raw = false)
 {
     if(strcmp($start, $finish) == 0)
     {
         $time = 0;
         if($raw)
         {
             $time .= ' seconds';
         }
 
        return array('distance' => 0, 'time' => $time);
     }
 
    $start  = urlencode($start);
     $finish = urlencode($finish);
 
    $distance   = 'unknown';
     $time       = 'unknown';
 
    $url = 'http://maps.google.com/m/directions?saddr='.$start.'&daddr='.$finish.'&hl=en&oi=nojs&dirflg=d';
     if($data = file_get_contents($url))
     {
         if(preg_match('@([0-9\.]+)[span<>/]{0,7} (mi|km)[span<>/]{0,7} - about <b>([^<]*)</b>@smi', $data, $found))
         {
             $distanceNum    = trim($found[1]);
             $distanceUnit   = trim($found[2]);
             $timeRaw        = trim($found[3]);
 
            if($raw)
             {
                 $distance = $distanceNum.' '.$distanceUnit;
                 $time     = $timeRaw;
             }
             else
             {
                 $distance = number_format($distanceNum, 2);
                 if(strcmp($distanceUnit, 'km') == 0)
                 {
                     $distance = $distanceNum / 1.609344;
                 }
 
                $time = 0;
 
                $parts = preg_split('@days?@i', $timeRaw);
                 if(count($parts) > 1)
                 {
                     $time += (86400 * $parts[0]);
                     $timeRaw = $parts[1];
                 }
 
                $parts = preg_split('@hours?@i', $timeRaw);
                 if(count($parts) > 1)
                 {
                     $time += (3600 * $parts[0]);
                     $timeRaw = $parts[1];
                 }
 
                $time += (60 * (int)$timeRaw);
             }
         }
         else
         {
             throw new Exception('Impossibile trovare questo indirizzo');
         }
 
        return array('distance' => number_format($distance*1609), 'time' => $time/60);
		$num1 = number_format($distance); 
     }
     else
     {
         throw new Exception('Could not resolve URL');
     }
 }
 ?>
 
  <?php
 {
   
	 $info = get_driving_information($inizio,$indirizzo);
	 echo $info['distance'].' km da Order Portal, ci occorrerebero circa '.$info['time'].' minuti per servirla con il nostro corriere ';
	 ?>
 
Effettivamente penso anche io che ci sia qualche problema con google/m il bello è che ho un esame nei prossimi gg in cui devo mostrare questo piccolo progetto..girando per la rete ho trovato questo script che fa effettivamente la stessa cosa (forse anche in maniera più elegante).

HTML:
<html>  
<head>  
   <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>  
   <title>Google Maps JavaScript API v3 Example: Directions Complex</title>  
   <script type="text/javascript"  
           src="http://maps.google.com/maps/api/js?sensor=false"></script> 
</head>  
<body style="font-family: Arial; font-size: 13px; color: red;">  
   <div id="map" style="width: 400px; height: 300px;"></div>  
   <div id="duration">Duration: </div>  
   <div id="distance">Distance: </div>  
 
   <script type="text/javascript">  
 
   var directionsService = new google.maps.DirectionsService(); 
   var directionsDisplay = new google.maps.DirectionsRenderer(); 
 
   var myOptions = { 
     zoom:7, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
   } 
 
   var map = new google.maps.Map(document.getElementById("map"), myOptions); 
   directionsDisplay.setMap(map); 
 
   var request = { 
       origin: 'Napoli',  
       destination: 'Milano', 
       travelMode: google.maps.DirectionsTravelMode.DRIVING 
   }; 
 
   directionsService.route(request, function(response, status) { 
      if (status == google.maps.DirectionsStatus.OK) { 
 
         // Display the distance: 
         document.getElementById('distance').innerHTML +=  
            response.routes[0].legs[0].distance.value + " meters"; 
 
         // Display the duration: 
         document.getElementById('duration').innerHTML +=  
            response.routes[0].legs[0].duration.value + " seconds"; 
 
         directionsDisplay.setDirections(response); 
      } 
   }); 
   </script>  
  
</body>  
</html>

Solo che ho dei problemi nel passare il valore "distance.value" all'interno ad una variabile PHP, dato che poi effettuavo un piccolo controllo sul valore e visualizzavo un msg a schermo all'utente dove gli comunicavo se poteva ricevere la consegna oppure no...
 

Discussioni simili