<?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); ini_set('max_execution_time', 0); /** * [] First, sign up for a key. http://code.google.com/apis/maps/signup.html * * [] A few people have mentioned that after some number of requests (between 100-300) * in quick succession google will kill your access for the day, so you may want to insert a * * sleep(1); * * To stagger the requests a little. * * [] Other Resources: http://code.google.com/p/php-google-map-api/ * * [] Note: GEOCODE (Geospatial Entity Object Code) is a standardized all-natural number * representation format specification for geospatial coordinate measurements that * provide details of the exact location of geospatial point at, below, or above the surface * of the earth at a specified moment of time. * Reference: http://en.wikipedia.org/wiki/Geocode */ //Set up our variables $longitude = ""; $latitude = ""; $precision = ""; //Three parts to the querystring: q is address, output is the format, key is the GAPI key $key = 'Your_Key_Here'; //$address = urlencode("1600 Amphitheatre Parkway"); // specify postal code or address. $address = urlencode("94043"); // specify postal code or address. ### output_format: ### xml: ### csv: status, accuracy, latitude, longitude ### json: $output_format = 'json'; // xml, csv, or json. $url = 'http://maps.google.com/maps/geo?q=' . $address . '&output=' . $output_format . '&key=' . $key; echo $url . ''; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER,0); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $data = curl_exec($ch); curl_close($ch); //echo '
'; //print_r($data); //echo ''; if ($output_format == 'json') { $data_json = json_decode($data); ### If status 200 okay. if ($data_json->Status->code == '200') { echo 'longitude: ' . $data_json->Placemark[0]->Point->coordinates[0]; // longitude echo ' '; echo 'latitude: ' . $data_json->Placemark[0]->Point->coordinates[1]; // latitude } echo ''; print_r($data_json); echo ''; } elseif ($output_format == 'csv') { $data_csvArr = str_getcsv_mem($data); ### If status 200 okay. if ($data_csvArr[0] == '200') { echo 'accuracy: ' . $data_csvArr[1]; // accuracy echo 'latitude: ' . $data_csvArr[2]; // latitude echo ' '; echo 'longitude: ' . $data_csvArr[3]; // longitude } } function str_getcsv_mem($input, $delimiter = ",", $enclosure = '"', $escape = "\\") { $outputArr = Null; $oneHundredKBs = 1 * 100 * 1024; $fp = fopen('php://temp/maxmemory:' . $oneHundredKBs, 'r+'); fputs($fp, $input); rewind($fp); $rowCount = 0; while (($row = fgetcsv($fp, 0, $delimiter, $enclosure)) !== FALSE) { //$escape only got added in 5.3.0 foreach ($row as $key => $col) { $outputArr[$rowCount][$key] = $col; } $rowCount++; } fclose($fp); return $outputArr; } /* stdClass Object ( [name] => 94043 [Status] => stdClass Object ( [code] => 200 [request] => geocode ) [Placemark] => Array ( [0] => stdClass Object ( [id] => p1 [address] => Mountain View, CA 94043, USA [AddressDetails] => stdClass Object ( [Accuracy] => 5 [Country] => stdClass Object ( [AdministrativeArea] => stdClass Object ( [AdministrativeAreaName] => CA [SubAdministrativeArea] => stdClass Object ( [Locality] => stdClass Object ( [LocalityName] => Mountain View [PostalCode] => stdClass Object ( [PostalCodeNumber] => 94043 ) ) [SubAdministrativeAreaName] => Santa Clara ) ) [CountryName] => USA [CountryNameCode] => US ) ) [ExtendedData] => stdClass Object ( [LatLonBox] => stdClass Object ( [north] => 37.4505349 [south] => 37.38567 [east] => -122.03277 [west] => -122.10842 ) ) [Point] => stdClass Object ( [coordinates] => Array ( [0] => -122.0723816 [1] => 37.428434 [2] => 0 ) ) ) ) ) */ ?>
Sunday, May 16, 2010
PHP Geocoding with the Google Maps API
PHP Geocoding with the Google Maps API
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment