Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class Geocoder
- {
- var $baseUrl = 'http://maps.google.com/maps/api/geocode/%s?sensor=%s&language=%s';
- function geocode($address, $output = 'json', $sensor = 'false', $language = 'fr')
- {
- if(is_array($address)){
- $address = implode(',', $address);
- }
- $requestUrl = $this->baseUrl.'&address=%s';
- $requestUrl = sprintf($requestUrl, $output, $sensor, $language, urlencode($address));
- return file_get_contents($requestUrl);
- }
- function reverse($latitude, $longitude, $output = 'json', $sensor = 'false', $language = 'fr'){
- $requestUrl = $this->baseUrl.'&latlng=%s,%s';
- $requestUrl = sprintf($requestUrl, $output, $sensor, $language, $latitude, $longitude);
- return file_get_contents($requestUrl);
- }
- /*
- http://code.google.com/intl/fr/apis/maps/documentation/javascript/services.html#GeocodingAddressTypes
- */
- function getAddressComponents($json, $types = array('country')){
- $decode = json_decode($json, true);
- if(isset($decode['status']) && strtoupper($decode['status']) == 'OK'){
- if(isset($decode['results'][0]['address_components'])){
- $addressComponents = $decode['results'][0]['address_components'];
- if(!is_array($types)){
- $types = array($types);
- }
- $tmp = array();
- foreach($addressComponents as $a){
- foreach($a['types'] as $t){
- if(in_array($t, $types)){
- $tmp[$t] = $a;
- unset($tmp[$t]['types']);
- }
- }
- }
- if(!empty($tmp)) return $tmp;
- else return false;
- }
- else return false;
- }
- else{
- trigger_error('Google Geocoding API - Status: '.$decode['status']);
- return false;
- }
- }
- function getHierarchyResult($addressComponents){
- $order = array(
- 'country',
- 'administrative_area_level_1',
- 'administrative_area_level_2',
- 'administrative_area_level_3',
- 'colloquial_area',
- 'locality',
- 'sublocality',
- 'postal_code'
- );
- $tmp = array();
- foreach($order as $o){
- if(isset($addressComponents[$o])){
- $tmp[$o] = $addressComponents[$o];
- }
- }
- return $tmp;
- }
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement