geo(); OR require_once('google_geo.php'); $address = array( 'street'=>'1600 Pennsylvania Ave NW', 'city'=>'Washington', 'state'=>'DC', 'zip'=>'2005'); $google = new GoogleGeo($address); $geo = $google->geo(); */ class GoogleGeo { //your GoogleMaps Api Key var $api_key = "ABQIAAAAvCbGW5EV-rEJpZP96-o0NxRPc12EQQx6Mu62N-PrzOQunKtWdRSVe1MQKF8NjPuHWXoMt0I-QOiNqQ"; function GoogleGeo($address=null){ $this->address_set = false; if($address!=null) $this->setAddress($address); } function setAddress($address){ if(is_array($address)){ $this->address_array = $address; $this->address_set = true; } else if(is_string($address)){ $this->address_string = $address; $this->address_set = true; } } function geo($address = null){ $base = "http://maps.google.com/maps/geo?q="; if($address!=null) $this->setAddress($address); if($this->address_set){ $url = $base; if(isset($this->address_string)){ $url.=urlencode($this->address_string); } else if (isset($this->address_array)){ foreach($this->address_array as $a) $url.=urlencode($a.' '); } $url.="&output=csv&key=".$this->api_key; //var_dump($url); $csv = get_content($url); $result = explode(',',$csv); if($result[0] == '200'){ //200 stands for HTTP status OK, let's go! $geo = array('latitude'=>$result[2],'longitude'=>$result[3]); return $geo; } } if($result[0]=='602') { $url = $base; if(isset($this->address_string)){ $url.=urlencode($this->address_string); } else if (isset($this->address_array)){ unset($this->address_array['zip']); foreach($this->address_array as $a) $url.=urlencode($a.' '); } $url.="&output=csv&key=".$this->api_key; //var_dump($url); $csv = get_content($url); $result = explode(',',$csv); if($result[0] == '200'){ //200 stands for HTTP status OK, let's go! $geo = array('latitude'=>$result[2],'longitude'=>$result[3]); return $geo; } } return null; } } function get_content($url) { $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_HEADER, 0); ob_start(); curl_exec ($ch); curl_close ($ch); $string = ob_get_contents(); ob_end_clean(); return $string; }