Frage von PG001, 22

Google Api Entfernungsmessung?

Hallo Liebe Leute,

ich habe ein Problem bei der Messung zwischen zwei Postleitzahlen über die google api:

$url="<a href="http://maps.googleapis.com/maps/api/distancematrix/xml?+&origins=">http://maps.googleapis.com/maps/api/distancematrix/xml?+&origins=</a>".$start_adresse."+DE&destinations=".$array_id_plz[0][1][$y]."+DE&mode=driving&language=de-DE&sensor=false";
    
    

Ich habe also ein Array und lasse über den Link die Distance zwischen der $start_adresse und den Postleitzahlen in dem Array berechnen.

Komischerweise funktioniert das ab und zu einwandfrei, aber eben nur ab und zu. Das Array beinhaltet im Moment 25 Postleitzahlen, aber auch wenn ich es auf 2 PLZ kürze funktioniert es nicht immer.

Hat jemand von euch eine Idee woran es liegen könnte?

Hier ist nochmal der komplette Code:

    <?php
    
    $sqlkunde_favoriten_id=("SELECT ladies_id, ladies_plz, ladies_link FROM ladies WHERE ladies_status>0 LIMIT 2");

$ergebniskunde_favoriten_id=mysql_query($sqlkunde_favoriten_id,$verbindung) or die(mysql_error());

        while ($row = mysql_fetch_array($ergebniskunde_favoriten_id, MYSQL_ASSOC)) 
        {
            $array_id[]=  $row['ladies_id'];
            $array_plz[]=  $row['ladies_plz'];
            $array_link[]=  $row['ladies_link'];
            
}   
    $array_id_plz[] = array($array_id,$array_plz,$array_link);
    

for($y = 0; $y < count($array_plz); $y++){
        
        
        
        
        
        $start_adresse ="50678";
        $url="<a href="http://maps.googleapis.com/maps/api/distancematrix/xml?+&origins=">http://maps.googleapis.com/maps/api/distancematrix/xml?+&origins=</a>".$start_adresse."+DE&destinations=".$array_id_plz[0][1][$y]."+DE&mode=driving&language=de-DE&sensor=false";
        
        
        
        
    if($xml=simplexml_load_file($url)){
        if($xml->status=='OK'){
            $distance[] = json_decode(json_encode($xml->row->element->distance->text), true);
            
          
         
        }
         }  
         
        
        
    
    
     }
    
    
for($y = 0; $y < count($array_plz); $y++){
$erg2[] = array($array_id_plz[0][0][$y],$array_id_plz[0][1][$y],$array_id_plz[0][2][$y],$distance[$y][0]);

}   


function sortByOrder($a, $b) {
    return $a[3] - $b[3];
}

usort($erg2, 'sortByOrder');


    
echo "<pre>";  
print_r ($erg2);  

  
echo "  ";   
 

    


    

for($z = 0; $z < count($erg2); $z++){
 
   if($erg2[$z][3] <> ""){
     echo "
            
              <div class=\"einzelsupported\"><a href=\"".$erg2[$z][2].".html\"><img src=\"gallery/ladies/profilbilder/".$erg2[$z][0].".jpg\" width=\"98px\" height=\"98px\" alt=\"\" /></a>    </div> 
     ";
    } 
     
     
}

    
?>  

Oder gibt es noch eine andere Möglichkeit?

Vielen Dank schonmal für eine Antwort.

Gruß PG

Antwort
von PatrickMuku, 3

Hey,

als erstes fällt mir auf, dass in deiner URL irgendwie ein a-Tag reingerutscht ist:


$url="<a href="http://maps.googleapis.com/maps/api/distancematrix/xml?+&origins=">http://maps.googleapis.com/maps/api/distancematrix/xml?+&origins=</a>".$start_adresse."+DE&destinations=".$array_id_plz[0][1][$y]."+DE&mode=driving&language=de-DE&sensor=false";


Das andere Problem, dass ich mal hatte: Google lässt nur eine bestimmte Anzahl, ich meine es wären 10, an Queries pro Sekunde zu. Dein Skript wird viel schneller sein, sodass Google dir nicht mehr antwortet. Probier mal nach jeder Anfrage ein sleep(1) zu setzen. Später dann optimieren auf 10 Anfragen ;)

siehe: http://www.w3schools.com/php/func_misc_sleep.asp

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten