Pogledajte određenu poruku
Staro 26. 11. 2010.   #5
webarto
expert
Grand Master
 
Avatar webarto
 
Datum učlanjenja: 11.04.2010
Poruke: 998
Hvala: 141
959 "Hvala" u 153 poruka
webarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished roadwebarto is on a distinguished road
Default

Dodao sam opciju približnog računanja razdaljine između A i B na osnovu geo lokacije, kao i približno računanje puta (1/3 ukupne razdaljine), što više krivina, to je tačnije


PHP kôd:
$vm = new VM;
echo 
$vm->getDistance("beograd""novi sad"); 
Citat:
Distance between Beograd and Novi Sad is ~73.521 kilometers.
PHP kôd:
$vm = new VM;
echo 
$vm->getDistance("beograd""novi sad"true); 
Citat:
Distance between Beograd and Novi Sad is ~98.028 kilometers.
PHP kôd:
class VM{
/**
 * ViaMichelin.com City2Hash PHP Class (25.11.2010)
 * @author Webarto.com
 * @copyright 2010
 */
    
    
public function generateLink($from$to){
    return 
'<a href="http://www.viamichelin.com/web/Itineraires?strStartLocid='.$this->getHash($from).'&amp;strDestLocid='.$this->getHash($to).'">Click here to get route from '.ucwords($from).' to '.ucwords($to).'</a>';   
    }
    
    public function 
getDistance($from$to$road false){
        
$x $this->getLL($from);
        
$y $this->getLL($to);
        
$distance $this->distance($x[1], $x[0], $y[1], $y[0]);
        if(
$road == true){
            
$distance $distance + ($distance 3);
        }
        return 
"Distance between ".ucwords($from)." and ".ucwords($to)." is ~$distance kilometers.";
    }
    
    private function 
getHash($city){
        
$data $this->loadData($city);
        
preg_match('#gf : \"(.*?)\"#is'$data$bingo);
        if(!empty(
$bingo[1])) return $bingo[1];
    }
    
    private function 
getLL($city){
        
$data $this->loadData($city);
        
preg_match('#\{lon : (.*?), lat : (.*?)\}#is'$data$bingo);
        unset(
$bingo[0]);
        return 
$bingo;
    }
    
    private function 
loadData($city){
        
$city urlencode($city);
        
//cURL 4-5x faster than file_get_contents()
        
return $this->curl("http://www.viamichelin.com/vmw2/maf/dyn/controller/jseLocationFinder?strMerged=$city");
    }
    
    private function 
distance($lat1$lon1$lat2$lon2){ 
        
$theta $lon1 $lon2
        
$dist sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
        
$dist acos($dist); 
        
$dist rad2deg($dist);
        
$miles $dist 60 1.1515;
        return 
round($miles 1.6093443);
    }
    
    
//cURL function
    
private function curl($url){
        
$ch curl_init();
        
curl_setopt($chCURLOPT_URL,$url);
        
curl_setopt($chCURLOPT_RETURNTRANSFER,1);
        return 
curl_exec($ch);
        
curl_close ($ch);
    }

Link: http://webarto.com/53/viamichelin-php-class
webarto je offline   Odgovorite uz citat