An open API service indexing awesome lists of open source software.

https://github.com/yidas/google-maps-services-php

PHP client library (SDK) for Google Maps API Web Services
https://github.com/yidas/google-maps-services-php

google-maps-api-php google-maps-sdk google-maps-services php php-client

Last synced: 11 months ago
JSON representation

PHP client library (SDK) for Google Maps API Web Services

Awesome Lists containing this project

README

          





Google Maps Services for PHP



PHP client library(SDK) for Google Maps API Web Services

[![Latest Stable Version](https://poser.pugx.org/yidas/google-maps-services/v/stable?format=flat-square)](https://packagist.org/packages/yidas/google-maps-services)
[![License](https://poser.pugx.org/yidas/google-maps-services/license?format=flat-square)](https://packagist.org/packages/yidas/google-maps-services)
[![Total Downloads](https://poser.pugx.org/yidas/google-maps-services/downloads?format=flat-square)](https://packagist.org/packages/yidas/google-maps-services)
[![Monthly Downloads](https://poser.pugx.org/yidas/google-maps-services/d/monthly?format=flat-square)](https://packagist.org/packages/yidas/google-maps-services)

OUTLINE
-------

- [Demonstration](#demonstration)
- [Description](#description)
- [Requirements](#requirements)
- [API keys](#api-keys)
- [Installation](#installation)
- [Usage](#usage)
- [Client](#client)
- [Google Maps APIs Premium Plan license](#google-maps-apis-premium-plan-license)
- [Language](#language)
- [APIs](#apis)

---

DEMONSTRATION
-------------

```php
$gmaps = new \yidas\googleMaps\Client(['key'=>'Your API Key']);

// Geocoding an address
$geocodeResult = $gmaps->geocode('Taipei 101, Taipei City, Taiwan 110');

// Look up an address with reverse geocoding
$reverseGeocodeResult = $gmaps->reverseGeocode([25.0339639, 121.5644722]);

// Request directions via public transit
$directionsResult = $gmaps->directions('National Palace Museum', 'Taipei 101', [
'mode' => "transit",
'departure_time' => time(),
]);
```

---

DESCRIPTION
-----------

The PHP Client for Google Maps Services is a PHP Client library for the following [Google Maps APIs](https://developers.google.com/maps):

- Maps
- [Elevation API](#elevation-api) ([Google Doc](https://developers.google.com/maps/documentation/elevation/))
- Routes
- [Routes API](#routes-api) ([Google Doc](https://developers.google.com/maps/documentation/routes))
- [Roads API](#roads-api) ([Google Doc](https://developers.google.com/maps/documentation/roads))
- [Directions API](#directions-api) ([Google Doc](https://developers.google.com/maps/documentation/directions/))
- [Distance Matrix API](#distance-matrix-api) ([Google Doc](https://developers.google.com/maps/documentation/distancematrix/))
- Places
- [Places API] (TBD)
- [Geocoding API](#geocoding-api) ([Google Doc](https://developers.google.com/maps/documentation/geocoding/))
- [Geolocation API](#geolocation-api) ([Google Doc](https://developers.google.com/maps/documentation/geolocation/))
- [Time Zone API](#time-zone-api) ([Google Doc](https://developers.google.com/maps/documentation/timezone/))

---

REQUIREMENTS
------------

- PHP 7.0+ or higher

### API keys

Each Google Maps Web Service request requires an API key or client ID. API keys
are freely available with a Google Account at
https://developers.google.com/console. The type of API key you need is a
**Server key**.

To get an API key:

1. Visit https://developers.google.com/console and log in with
a Google Account.
2. Select one of your existing projects, or create a new project.
3. Enable the Google Maps Services API(s) you plan to use, such as:
* Directions API
* Distance Matrix API
* Geocoding API
* ...
4. Create a new **Server key**.
5. If you'd like to restrict requests to a specific IP address, do so now.

For guided help, follow the instructions for the [Directions API][directions-key]. You only need one API key, but remember to enable all the APIs you need.
For even more information, see the guide to [API keys][apikey].

**Important:** This key should be kept secret on your server.

---

INSTALLATION
------------

Run Composer in your project:

composer require yidas/google-maps-services

Then you could call it after Composer is loaded depended on your PHP framework:

```php
require __DIR__ . '/vendor/autoload.php';

use yidas\googleMaps\Client;
```

---

USAGE
-----

Before using any Google Maps Services, first you need to create a Client with configuration, then use the client to access Google Maps Services.

### Client

Create a Client using [API key]((#api-keys)):

```php
$gmaps = new \yidas\googleMaps\Client(['key'=>'Your API Key']);
```

#### Google Maps APIs Premium Plan license

If you use [Google Maps APIs Premium Plan license](https://developers.google.com/maps/documentation/directions/get-api-key#client-id) instead of an API key, you could create Client using client ID and client secret (digital signature) for authentication.

```php
$gmaps = new \yidas\googleMaps\Client([
'clientID' => 'Your client ID',
'clientSecret' => 'Your digital signature'
]);
```

#### Language

You could set language for Client for all services:

```php
$gmaps = new \yidas\googleMaps\Client(['key'=>'Your API Key', 'language'=>'zh-TW']);
```

> [list of supported languages - Google Maps Platform](https://developers.google.com/maps/faq#languagesupport)

Changing language during execution:

```php
$gmaps->setLanguage('zh-TW');
// ...
```

### APIs

#### Elevation API

[Elevation API overview | Google for Developers](https://developers.google.com/maps/documentation/elevation/overview)

```php
// Get elevation by locations parameter
$elevationResult = $gmaps->elevation([25.0339639, 121.5644722]);
$elevationResult = $gmaps->elevation('25.0339639, 121.5644722');
```

#### Routes API

[Get a route | Google for Developers](https://developers.google.com/maps/documentation/routes/compute_route_directions)

```php
$routes = $gmaps->computeRoutes($originArray, $destinationArray, $fullBodyArray, $fieldMask)

// Get the route data between two places simply
$routes = $gmaps->computeRoutes([
"location" => [
"latLng" => [
"latitude" => 37.419734,
"longitude" => -122.0827784
]
]
],
[
"location" => [
"latLng" => [
"latitude" => 37.41767,
"longitude" => -122.079595
]
]
]);

// Get the full route data between two places with full request data
$routes = $gmaps->computeRoutes([...], [...], ["travelMode": "DRIVE", ...], '*');
```

#### Roads API

[Snap to Roads | Google for Developers](https://developers.google.com/maps/documentation/roads/snap)

```php
$roads = $gmaps->snapToRoads([[-35.27801,149.12958], [-35.28032,149.12907], [-35.28099,149.12929]]);
```

#### Directions API

[Getting directions | Google for Developers](https://developers.google.com/maps/documentation/directions/get-directions)

```php
// Request directions via public transit
$directionsResult = $gmaps->directions('National Palace Museum', 'Taipei 101', [
'mode' => "transit",
'departure_time' => time(),
]);
```

#### Distance Matrix API

[Get started with the Distance Matrix API | Google for Developers](https://developers.google.com/maps/documentation/distance-matrix/start)

```php
// Get the distance matrix data between two places
$distanceMatrixResult = $gmaps->distanceMatrix('National Palace Museum', 'Taipei 101');

// With Imperial units
$distanceMatrixResult = $gmaps->distanceMatrix('National Palace Museum', 'Taipei 101', [
'units' => 'imperial',
]);
```

#### Geocoding API

[Geocoding API overview | Google for Developers](https://developers.google.com/maps/documentation/geocoding/overview)

```php
// Geocoding an address
$geocodeResult = $gmaps->geocode('Taipei 101, Taipei City, Taiwan 110');

// Look up an address with reverse geocoding
$reverseGeocodeResult = $gmaps->reverseGeocode([25.0339639, 121.5644722]);
```

#### Geolocation API

[Geolocation API overview | Google for Developers](https://developers.google.com/maps/documentation/geolocation/overview)

```php
// Simple geolocate
$geolocateResult = $gmaps->geolocate([]);
```

#### Time Zone API

[Time Zone API overview | Google for Developers](https://developers.google.com/maps/documentation/timezone/overview)

```php
// requests the time zone data for giving location
$timezoneResult = $gmaps->timezone([25.0339639, 121.5644722]);
```