Advertisement
Guest User

Untitled

a guest
Aug 25th, 2010
1,194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.05 KB | None | 0 0
  1. <?php
  2. class Geocoder
  3. {
  4.     var $baseUrl = 'http://maps.google.com/maps/api/geocode/%s?sensor=%s&language=%s';
  5.  
  6.     function geocode($address, $output = 'json', $sensor = 'false', $language = 'fr')
  7.     {
  8.         if(is_array($address)){
  9.             $address = implode(',', $address);
  10.         }
  11.        
  12.         $requestUrl = $this->baseUrl.'&address=%s';
  13.         $requestUrl = sprintf($requestUrl, $output, $sensor, $language, urlencode($address));
  14.  
  15.         return file_get_contents($requestUrl);
  16.     }
  17.    
  18.     function reverse($latitude, $longitude, $output = 'json', $sensor = 'false', $language = 'fr'){
  19.         $requestUrl = $this->baseUrl.'&latlng=%s,%s';
  20.         $requestUrl = sprintf($requestUrl, $output, $sensor, $language, $latitude, $longitude);
  21.        
  22.         return file_get_contents($requestUrl);
  23.     }
  24.  
  25.     /*
  26.     http://code.google.com/intl/fr/apis/maps/documentation/javascript/services.html#GeocodingAddressTypes
  27.     */
  28.     function getAddressComponents($json, $types = array('country')){
  29.         $decode = json_decode($json, true);
  30.        
  31.         if(isset($decode['status']) && strtoupper($decode['status']) == 'OK'){
  32.             if(isset($decode['results'][0]['address_components'])){
  33.                 $addressComponents = $decode['results'][0]['address_components'];
  34.                 if(!is_array($types)){
  35.                     $types = array($types);
  36.                 }
  37.                 $tmp = array();
  38.                 foreach($addressComponents as $a){
  39.                     foreach($a['types'] as $t){
  40.                         if(in_array($t, $types)){
  41.                             $tmp[$t] = $a;
  42.                             unset($tmp[$t]['types']);
  43.                         }
  44.                     }
  45.                 }
  46.                 if(!empty($tmp)) return $tmp;
  47.                 else return false;
  48.             }
  49.             else return false;
  50.         }
  51.         else{
  52.             trigger_error('Google Geocoding API - Status: '.$decode['status']);
  53.             return false;
  54.         }
  55.     }
  56.    
  57.     function getHierarchyResult($addressComponents){
  58.         $order = array(
  59.             'country',
  60.             'administrative_area_level_1',
  61.             'administrative_area_level_2',
  62.             'administrative_area_level_3',
  63.             'colloquial_area',
  64.             'locality',
  65.             'sublocality',
  66.             'postal_code'
  67.         );
  68.        
  69.         $tmp = array();
  70.         foreach($order as $o){
  71.             if(isset($addressComponents[$o])){
  72.                 $tmp[$o] = $addressComponents[$o];
  73.             }
  74.         }
  75.         return $tmp;
  76.     }
  77.    
  78. }
  79. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement