PHP: Geocoding with cURL and JSON…

wanting to balance the work load for a site between server-side and client-side tasks, i abstracted this very simple geocoding class with Google Maps.

/*
##############################################################
Version: 1.0
Author: Abram Morphew
Created: 2011-02-10

File: class.Geocoder.php
Desc: PHP class for geocoding with Google Geocoder API. No API
key is necessary to use this class.

##############################################################
*/
if(!defined('APPNAME')) { die('Hacking attempt'); }

class Geocoder {
    public $status = null;
    public $address = null;
    public $response = array();
    public $coordinates = array();

    function __construct() { }

    function coordinates($address=null,$city=null,$state=null,$postcode=null,$country=null) {
        $query = urlencode($address.",".$city.",".$state.",".$postcode.",".$country);
        $url = "http://maps.google.com/maps/api/geocode/json?address=".$query."&sensor=false"; 
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $response = curl_exec($ch);
        curl_close($ch);

        // set public vars and return... 
        $this->response = json_decode($response,true);
        $this->status = $this->response['status'];
        $this->address = $this->response['results'][0]['formatted_address'];
        $this->coordinates = $this->response['results'][0]['geometry']['location'];
        return $this->coordinates;
    }

}


Posted

in

by

Tags: