alexpechkarev/google-geocoder

Simple Google Geocoding API v3 wrapper for Laravel 4/5, Slim3 etc

1.2.0 2017-09-27 12:53 UTC

README

Build Status

This package provides simple facility to make The Google Geocoding API v3 calls with Laravel 5.

See Collection of Google Maps API Web Services for Laravel that also includes Google Geocoding API v3.

Laravel 5

Dependency

PHP cURL required

Installation

To install edit composer.json and add following line:

"alexpechkarev/google-geocoder": "dev-master"

Run composer update

Configuration

Once installed, register Laravel service provider, in your config/app.php:

'providers' => array(
	...
    'Alexpechkarev\GoogleGeocoder\GoogleGeocoderServiceProvider',
)

Next, create a config/google-geocoder.php, containing:

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Google Geocoder
    |--------------------------------------------------------------------------
    | Geocoding is the process of converting addresses (like "1600 Amphitheatre Parkway, Mountain View, CA")
    | into geographic coordinates (like latitude 37.423021 and longitude -122.083739),
    | which you can use to place markers or position the map.
    |
    */

    /*
    |--------------------------------------------------------------------------
    | Application Key
    |--------------------------------------------------------------------------
    |
    | Your application's API key. This key identifies your application for
    | purposes of quota management. Learn how to get a key from the APIs Console.
    */
    'applicationKey' => 'my-api-key',

    /*
    |--------------------------------------------------------------------------
    | Request URL
    |--------------------------------------------------------------------------
    |
    */
    'requestUrl' => [
        'json' => 'https://maps.googleapis.com/maps/api/geocode/json?',
        'xml'  => 'https://maps.googleapis.com/maps/api/geocode/xml?'
    ],
];

Slim 3

Settings

return [
    'settings' => [
      /* slim settings */
      'displayErrorDetails' => true,

      'determineRouteBeforeAppMiddleware' => true,

        'google' => [
          'geocoder' => [
            'applicationKey' => 'my-api-key',
            'requestUrl' => [
                'json' => 'https://maps.googleapis.com/maps/api/geocode/json?',
                'xml'  => 'https://maps.googleapis.com/maps/api/geocode/xml?'
            ]
          ]
        ]
    ]
];

Container Dependency

use GoogleGeocoder\GoogleGeocoder;

$container['GeoCoder'] = function ($container) {

  return new GoogleGeocoder($container->get('settings')['google']['geocoder']);

};

Using

$gc = $this->container['GeoCoder'];

Usage

Before making calls please ensure you obtain API Key to identify your application and add this key in the configuration file. More information on API Key please refer to The Google Geocoding API.

'applicationKey' => 'your-api-key',

Create an array with key=>value pairs specifying address you would like to geocode:

$param = array("address"=>"76 Buckingham Palace Road London SW1W 9TQ");

Use following command to receive Geocoding response in json format, use xml as first parameter for XML response.

$response = \Geocoder::geocode('json', $param);

To restrict your results to a specific area use component filter Component Filtering by adding it's filters to parameter array.

$param = array(
                "address"=>"76 Buckingham Palace Road London SW1W 9TQ",
                "components"=>"country:GB"
            );

Geocoding API supports translation of map coordinates into human-readable address by reverse geocoding using latitude and longitude parameters. For more details refer to Reverse Geocoding To make reverse geocoding request use following:

$param = array("latlng"=>"40.714224,-73.961452");
$response = \Geocoder::geocode('json', $param);

All requests will return string value. For Response example, Status Codes, Error Messages and Results please refer to [Geocoding Responses] (https://developers.google.com/maps/documentation/geocoding/#GeocodingResponses)

Support

Please open an issue on GitHub

License

Google Geocoder for Laravel 5 is released under the MIT License. See the bundled LICENSE file for details.