Code Monkey home page Code Monkey logo

google-maps's Introduction

Collection of Google Maps API Web Services for Laravel 5

Provides convenient way of setting up and making requests to Maps API from Laravel application. For services documentation, API key and Usage Limits visit Google Maps API Web Services and Maps API for Terms of Service License Restrictions.

Features

Dependency

Notes

Deprication notices for Google Places API Web Service that effects Premium data (Zagat), types parameter, id and reference fields.

  • Nearby Search - types parameter depricated, use parameter type (string)
  • Place Details - the reference is now deprecated in favor of placeid (placeid originally used in this package)
  • Place Add - still uses types parameter as per service documentation
  • Place Autocomplete - still uses types parameter as per service documentation

Installation

Issue following command in console:

composer require alexpechkarev/google-maps:1.0.9

Alternatively edit composer.json by adding following line and run composer update

"require": { 
		....,
		"alexpechkarev/google-maps":"1.0.9",
	
	},

Configuration

Register package service provider and facade in 'config/app.php'

'providers' => [
    ...
    GoogleMaps\ServiceProvider\GoogleMapsServiceProvider::class,
]

'aliases' => [
    ...
    'GoogleMaps' => GoogleMaps\Facade\GoogleMapsFacade::class,
]

Publish configuration file using php artisan vendor:publish --tag=googlemaps --force or simply copy package configuration file and paste into config/googlemaps.php

Open configuration file config/googlemaps.php and add your service key

    /*
    |----------------------------------
    | Service Keys
    |------------------------------------
    */
    
    'key'       => 'ADD YOUR SERVICE KEY HERE',

If you like to use different keys for any of the services, you can overwrite master API Key by specifying it in the service array for selected web service.

Usage

Here is an example of making request to Geocoding API:

$response = \GoogleMaps::load('geocoding')
		->setParam (['address' =>'santa cruz'])
 		->get();

By default, where appropriate, output parameter set to JSON. Don't forget to decode JSON string into PHP variable. See Processing Response for more details on parsing returning output.

Required parameters can be specified as an array of key:value pairs:

$response = \GoogleMaps::load('geocoding')
		->setParam ([
		    'address'    =>'santa cruz',
         	    'components' => [
                     	'administrative_area'  => 'TX',
                     	'country'              => 'US',
                      ]

                ])
                ->get();

Alternatively parameters can be set using setParamByKey() method. For deeply nested array use "dot" notation as per example below.

$endpoint = \GoogleMaps::load('geocoding')
   ->setParamByKey('address', 'santa cruz')
   ->setParamByKey('components.administrative_area', 'TX') //return $this
    ... 

Another example showing request to Places API Place Add service:

$response = \GoogleMaps::load('placeadd')
                ->setParam([
                   'location' => [
                        'lat'  => -33.8669710,
                        'lng'  => 151.1958750
                      ],
                   'accuracy'           => 0,
                   "name"               =>  "Google Shoes!",
                   "address"            => "48 Pirrama Road, Pyrmont, NSW 2009, Australia",
                   "types"              => ["shoe_store"],
                   "website"            => "http://www.google.com.au/",
                   "language"           => "en-AU",
                   "phone_number"       =>  "(02) 9374 4000"                       
                          ])
                  ->get();	

Available methods


load( $serviceName ) - load web service by name

Accepts string as parameter, web service name as specified in configuration file.
Returns reference to it's self.

\GoogleMaps::load('geocoding') 
... 

setEndpoint( $endpoint ) - set request output

Accepts string as parameter, json or xml, if omitted defaulted to json.
Returns reference to it's self.

$response = \GoogleMaps::load('geocoding')
		->setEndpoint('json')  // return $this
		...

getEndpoint() - get current request output

Returns string.

$endpoint = \GoogleMaps::load('geocoding')
		->setEndpoint('json')
		->getEndpoint();

echo $endpoint; // output 'json'

setParamByKey( $key, $value ) - set request parameter using key:value pair

Accepts two parameters:

  • key - body parameter name
  • value - body parameter value

Deeply nested array can use 'dot' notation to assign value.
Returns reference to it's self.

$endpoint = \GoogleMaps::load('geocoding')
   ->setParamByKey('address', 'santa cruz')
   ->setParamByKey('components.administrative_area', 'TX') //return $this
    ...

setParam( $parameters) - set all request parameters at once

Accepts array of parameters
Returns reference to it's self.

$response = \GoogleMaps::load('geocoding')
                ->setParam([
                   'address'     => 'santa cruz',
                   'components'  => [
                        'administrative_area'   => 'TX',
                        'country'               => 'US',
                         ]
                     ]) // return $this
...

  • get() - perform web service request (irrespectively to request type POST or GET )
  • get( $key ) - accepts string response body key, use 'dot' notation for deeply nested array

Returns web service response in the format specified by setEndpoint() method, if omitted defaulted to JSON. Use json_decode() to convert JSON string into PHP variable. See Processing Response for more details on parsing returning output.

$response = \GoogleMaps::load('geocoding')
                ->setParamByKey('address', 'santa cruz')
                ->setParamByKey('components.administrative_area', 'TX') 
                 ->get();

var_dump( json_decode( $response ) );  // output 

/*
{\n
   "results" : [\n
      {\n
         "address_components" : [\n
            {\n
               "long_name" : "277",\n
               "short_name" : "277",\n
               "types" : [ "street_number" ]\n
            },\n
            ...
*/

Example with $key parameter

$response = \GoogleMaps::load('geocoding')
                ->setParamByKey('latlng', '40.714224,-73.961452') 
                 ->get('results.formatted_address');

var_dump( json_decode( $response ) );  // output 

/*
array:1 [▼
  "results" => array:9 [▼
    0 => array:1 [▼
      "formatted_address" => "277 Bedford Ave, Brooklyn, NY 11211, USA"
    ]
    1 => array:1 [▼
      "formatted_address" => "Grand St/Bedford Av, Brooklyn, NY 11211, USA"
    ]
            ...
*/

isLocationOnEdge( $lat, $lng, $tolrance = 0.1 ) - To determine whether a point falls on or near a polyline, or on or near the edge of a polygon, pass the point, the polyline/polygon, and optionally a tolerance value in degrees.

This method only available with Google Maps Directions API.

Accepted parameter:

  • $lat - double latitude
  • $lng - double longitude
  • $tolrance - double
$response = \GoogleMaps::load('directions')
            ->setParam([
                'origin'          => 'place_id:ChIJ685WIFYViEgRHlHvBbiD5nE', 
                'destination'     => 'place_id:ChIJA01I-8YVhkgRGJb0fW4UX7Y', 
            ])
           ->isLocationOnEdge(55.86483,-4.25161);

    dd( $response  );  // true

containsLocation( $lat, $lng ) -To find whether a given point falls within a polygon.

This method only available with Google Maps Directions API.

Accepted parameter:

  • $lat - double latitude
  • $lng - double longitude
$response = \GoogleMaps::load('directions')
            ->setParam([
                'origin'          => 'place_id:ChIJ685WIFYViEgRHlHvBbiD5nE', 
                'destination'     => 'place_id:ChIJA01I-8YVhkgRGJb0fW4UX7Y', 
            ])
           ->containsLocation(55.86483,-4.25161);

    dd( $response  );  // true

Support

Please open an issue on GitHub

License

Collection of Google Maps API Web Services for Laravel 5 is released under the MIT License. See the bundled LICENSE file for details.

google-maps's People

Contributors

alexpechkarev avatar gart77 avatar vesper8 avatar syrok avatar xeader avatar facundofarias avatar nmfzone avatar makhnovskiy avatar repat avatar

Watchers

James Cloos avatar Cương Phạm avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.