Google places php working example
Setup Setup is simple, change out the API Key and you’re ready to go.
Example Usage
Searching a new place
$gplaces = New GooglePlaces;
$gplaces->SetLocation("43.612631,-116.211076");
$gplaces->SetRadius(50000);
$gplaces->SetTypes("bank");
$results = $gplaces->Search();
Adding a new place
//Adding a new place
$gplaces = New GooglePlaces;
$gplaces->SetLocation("43.612631,-116.211076");
$gplaces->SetAccuracy(50);
$gplaces->SetTypes("bar");
$gplaces->SetName("New Bar Test");
$results = $gplaces->Add();
Deleting a place before it has been moderated and approved
$gplaces = New GooglePlaces;
$gplaces->SetReference("xxxxxyyyyyyyzzzzzz");
$results = $gplaces->Delete();
PHP CLASS:
class GooglePlaces
{
private $APIKey = "xxxxxxxxx";
public $OutputType = "json"; //either json, xml or array
public $Errors = array();
private $APIUrl = "https://maps.googleapis.com/maps/api/place";
private $APICallType = "";
private $IncludeDetails = false;
//all calls
private $Language = 'en'; //optional - https://spreadsheets.google.com/pub?key=p9pdwsai2hDMsLkXsoM05KQ&gid=1
//Search
private $Location; //REQUIRED - This must be provided as a google.maps.LatLng object.
private $Radius; //REQUIRED
private $Types; //optional - separate tyep with pipe symbol http://code.google.com/apis/maps/documentation/places/supported_types.html
private $Name; //optional
//Search, Details,
private $Sensor = 'false'; //REQUIRED - is $Location coming from a sensor? like GPS?
//Details & Delete
private $Reference;
//Add
private $Accuracy;
public function Search()
{
$this->APICallType = "search";
return $this->APICall();
}
public function Details()
{
$this->APICallType = "details";
return $this->APICall();
}
public function Checkin()
{
$this->APICallType = "checkin-in";
return $this->APICall();
}
public function Add()
{
$this->APICallType = "add";
return $this->APICall();
}
public function Delete()
{
$this->APICallType = "delete";
return $this->APICall();
}
public function SetLocation($Location)
{
$this->Location = $Location;
}
public function SetRadius($Radius)
{
$this->Radius = $Radius;
}
public function SetTypes($Types)
{
$this->Types = $Types;
}
public function SetLanguage($Language)
{
$this->Language = $Language;
}
public function SetName($Name)
{
$this->Name = $Name;
}
public function SetSensor($Sensor)
{
$this->Sensor = $Sensor;
}
public function SetReference($Reference)
{
$this->Reference = $Reference;
}
public function SetAccuracy($Accuracy)
{
$this->Accuracy = $Accuracy;
}
public function SetIncludeDetails($IncludeDetails)
{
$this->IncludeDetails = $IncludeDetails;
}
private function CheckForErrors()
{
if(empty($this->APICallType))
{
$this->Errors[] = "API Call Type is required but is missing.";
}
if(empty($this->APIKey))
{
$this->Errors[] = "API Key is is required but is missing.";
}
if(($this->OutputType!="json") && ($this->OutputType!="xml") && ($this->OutputType!="json"))
{
$this->Errors[] = "OutputType is required but is missing.";
}
}
private function APICall()
{
$this->CheckForErrors();
if($this->APICallType=="add" || $this->APICallType=="delete")
{
$URLToPostTo = $this->APIUrl."/".$this->APICallType."/".$this->OutputType."?key=".$this->APIKey."&sensor=".$this->Sensor;
if($this->APICallType=="add")
{
$LocationArray = explode(",", $this->Location);
$lat = trim($LocationArray[0]);
$lng = trim($LocationArray[1]);
$paramstopost[location][lat] = $lat;
$paramstopost[location][lng] = $lng;
$paramstopost[accuracy] = $this->Accuracy;
$paramstopost[name] = $this->Name;
$paramstopost[types] = explode("|", $this->Types);
$paramstopost[language] = $this->Language;
}
if($this->APICallType=="delete")
{
$paramstopost[reference] = $this->Reference;
}
$result = json_decode($this->CurlCall($URLToPostTo,json_encode($paramstopost)));
$result->errors = $this->Errors;
return $result;
}
if($this->APICallType=="search")
{
$URLparams = "location=".$this->Location."&radius=".$this->Radius."&types=".$this->Types."&language=".$this->Language."&name=".$this->Name."&sensor=".$this->Sensor;
}
if($this->APICallType=="details")
{
$URLparams = "reference=".$this->Reference."&language=".$this->Language."&sensor=".$this->Sensor;
}
if($this->APICallType=="check-in")
{
$URLparams = "reference=".$this->Reference."&language=".$this->Language."&sensor=".$this->Sensor;
}
$URLToCall = $this->APIUrl."/".$this->APICallType."/".$this->OutputType."?key=".$this->APIKey."&".$URLparams;
$result = json_decode(file_get_contents($URLToCall),true);
$result[errors] = $this->Errors;
if($result[status]=="OK" && $this->APICallType=="details")
{
foreach($result[result][address_components] as $key=>$component)
{
if($component[types][0]=="street_number")
{
$address_street_number = $component[short_name];
}
if($component[types][0]=="route")
{
$address_street_name = $component[short_name];
}
if($component[types][0]=="locality")
{
$address_city = $component[short_name];
}
if($component[types][0]=="administrative_area_level_1")
{
$address_state = $component[short_name];
}
if($component[types][0]=="postal_code")
{
$address_postal_code = $component[short_name];
}
}
$result[result][address_fixed][street_number] = $address_street_number;
$result[result][address_fixed][address_street_name] = $address_street_name;
$result[result][address_fixed][address_city] = $address_city;
$result[result][address_fixed][address_state] = $address_state;
$result[result][address_fixed][address_postal_code] = $address_postal_code;
}
return $result;
}
private function CurlCall($url,$topost)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $topost);
$body = curl_exec($ch);
curl_close($ch);
return $body;
}
}
Source:http://andrenosalsky.com/blog/2011/google-places-api-php-class/