Wednesday, May 5, 2010

Google address search & recursion sample

function address_search() {
global $languageCode; //search result in English/deutch/..etc., lang
//for English - "en" is d code

//search key from the form
$inAddr = $_REQUEST['address'];
//echo 'inn';exit;
$items = array();
$code = strtolower($languageCode);
if(!$code) $code = 'en';
$googleCode = 'xyz..';//here add ur google api key
if($inAddr) {
$json = json_decode(file_get_contents('http://maps.google.com/maps/geo?output=json&oe=utf8&sensor=false&hl='.$code.'&key='.$googleCode.'&q='.urlencode($inAddr)));
if(!empty($json->Placemark)){
foreach($json->Placemark as $value){
if(!empty($value->AddressDetails)) {
$address = getAddressDetails($value->AddressDetails);
$items[$address] = $address;
}
}
}
}else {
//echo 'else';
}
//print drupal_to_js($items);
// exit;
echo '
';print_r($items);exit;
}

function getAddressDetails(&$addressDetails) {
static $country;
static $state;
static $city;
static $zipCode;
static $street;
if(!empty($addressDetails) && count($addressDetails) > 0 && @is_object($addressDetails)) {
//echo '
';print_r($addressDetails);exit;
foreach ($addressDetails as $addrKey => $addrVal) {
//echo $addrKey.'@@
';
switch (strtolower($addrKey)) {
case 'addressdetails':
//getAddressDetails($addrVal);
break;
case 'country':
$country = $addrVal->CountryName;
//echo '
';
//getAddressDetails($addrVal);
break;
case 'administrativearea':
$state = $addrVal->AdministrativeAreaName;
//getAddressDetails($addrVal);
break;
case 'subadministrativearea':
$street .= $addrVal->SubAdministrativeArea;
break;
case 'locality':
$city = $addrVal->LocalityName;
//getAddressDetails($addrVal);
break;
case 'thoroughfare':
$street = $addrVal->ThoroughfareName;
//getAddressDetails($addrVal);
break;
case 'dependentlocality':
$street = ' '.$addrVal->AddressLine[0];
//getAddressDetails($addrVal);
break;
case 'postalcode':
$zipCode = $addrVal->PostalCodeNumber;
//getAddressDetails($addrVal);
break;
default:
break;
}
if(!empty($addrVal) && @isset($addrVal)) {
//echo '
---';print_r($addrVal);exit;
getAddressDetails($addrVal);
}
}
}
return $addrKey = $street.', '.$city.', '.$state.', '.$country.', '.$zipCode;
}

No comments:

Post a Comment

 

Followers