Passed
Branch master (41ef34)
by Roberto
04:08
created

Geocoding::getByAddress()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
dl 0
loc 7
c 0
b 0
f 0
rs 10
cc 1
nc 1
nop 1
1
<?php
2
/**
3
 * Copyright (c) 2018 - present
4
 * Google Maps PHP - Geocoding.php
5
 * author: Roberto Belotti - [email protected]
6
 * web : robertobelotti.com, github.com/biscolab
7
 * Initial version created on: 5/9/2018
8
 * MIT license: https://github.com/biscolab/google-maps-php/blob/master/LICENSE
9
 */
10
11
namespace Biscolab\GoogleMaps\Api;
12
13
use Biscolab\GoogleMaps\Abstracts\Api;
14
use Biscolab\GoogleMaps\Fields\GoogleMapsRequestFields;
15
use Biscolab\GoogleMaps\Http\GoogleMapsRequest;
16
use Biscolab\GoogleMaps\Http\GoogleMapsResultsCollection;
17
use Biscolab\GoogleMaps\Http\Result\GeocodingResultsCollection;
18
use Biscolab\GoogleMaps\Object\LatLng;
19
20
/**
21
 * Class Geocoding
22
 * @package Biscolab\GoogleMaps\Api
23
 *
24
 * @see     https://developers.google.com/maps/documentation/geocoding/start
25
 */
26
class Geocoding extends Api {
27
28
	/**
29
	 * @var string
30
	 */
31
	const SERVICE_ENDPOINT = 'geocode';
32
33
	/**
34
	 * @param string $literal_address
35
	 *
36
	 * @return GoogleMapsResultsCollection
37
	 */
38
	public function getByAddress(string $literal_address): GoogleMapsResultsCollection {
39
40
		$request = new GoogleMapsRequest([
41
			GoogleMapsRequestFields::ADDRESS => $literal_address
42
		]);
43
44
		return $this->getResultsCollections($request);
45
	}
46
47
	/**
48
	 * @param LatLng $latlng
49
	 *
50
	 * @return GoogleMapsResultsCollection
51
	 */
52
	public function getReverse(LatLng $latlng): GoogleMapsResultsCollection {
53
54
		$request = $this->createRequest([
55
			GoogleMapsRequestFields::LATLNG => $latlng
56
		]);
57
58
		return $this->getResultsCollections($request);
59
	}
60
61
	/**
62
	 * @param string $place_id
63
	 *
64
	 * @return GoogleMapsResultsCollection
65
	 */
66
	public function getByPlaceId(string $place_id): GoogleMapsResultsCollection {
67
68
		$request = $this->createRequest([
69
			GoogleMapsRequestFields::PLACE_ID => $place_id
70
		]);
71
72
		return $this->getResultsCollections($request);
73
	}
74
75
	/**
76
	 * @param GoogleMapsRequest $request
77
	 *
78
	 * @return GoogleMapsResultsCollection
79
	 */
80
	public function getResultsCollections(GoogleMapsRequest $request): GoogleMapsResultsCollection {
81
82
		$results = $this->getGoogleMapsApi()->get($request)->getResults();
83
84
		return new GeocodingResultsCollection($results);
85
	}
86
87
	/**
88
	 * @param array $params
89
	 *
90
	 * @return GoogleMapsRequest
91
	 */
92
	public function createRequest(array $params): GoogleMapsRequest {
93
94
		return new GoogleMapsRequest($params);
95
	}
96
97
}