Completed
Branch heritage_class (c7b9cc)
by Maxime
02:29
created

Reverse::nameDetails()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
c 0
b 0
f 0
rs 9.4285
cc 2
eloc 3
nc 2
nop 1
1
<?php
2
/**
3
 * Class Reverse
4
 *
5
 * @package      maxh\nominatim
6
 * @author       Maxime Hélias <[email protected]>
7
 */
8
9
namespace maxh\Nominatim;
10
11
use maxh\Nominatim\Exceptions\InvalidParameterException;
12
13
/**
14
 * Reverse Geocoding a OSM nominatim service for places.
15
 *
16
 * @see http://wiki.openstreetmap.org/wiki/Nominatim
17
 */
18
class Reverse extends Query
19
{
20
21
	/**
22
	 * Output format accepted
23
	 * @var array
24
	 */
25
	public $accepteFormat = ['xml', 'json'];
26
27
	/**
28
	 * OSM Type accepted (Node/Way/Relation)
29
	 * @var array
30
	 */
31
	public $osmType = ['N', 'W', 'R'];
32
33
34
	/**
35
	 * Constructo
36
	 * @param array $query Default value for this query
37
	 */
38
	public function __construct(array $query = [])
39
	{
40
		parent::__construct();
41
42
		$this->setPath('reverse');
43
44
	}
45
46
	// -- Builder methods ------------------------------------------------------
47
48
	/**
49
	 * [osmType description]
50
	 * 
51
	 * @param  string $type
52
	 * 
53
	 * @return maxh\Nominatim\Reverse
54
	 * @throws maxh\Nominatim\Exceptions\InvalidParameterException  if osm type is not supported
55
	 */
56
	public function osmType($type)
57
	{
58
		if(in_array($type, $this->osmType))
59
		{
60
			$this->query['osm_type'] = $type;
61
62
			return $this;
63
		}
64
65
		throw new InvalidParameterException("OSM Type is not supported");
66
67
	}
68
69
	/**
70
	 * A specific osm node / way / relation to return an address for.
71
	 * 
72
	 * @param  integer $id
73
	 * 
74
	 * @return maxh\Nominatim\Reverse
75
	 */
76
	public function osmId($id)
77
	{
78
		$this->query['osm_id'] = $id;
79
80
		return $this;
81
	}
82
83
	/**
84
	 * The location to generate an address for
85
	 * 
86
	 * @param  float $lat The latitude
87
	 * @param  float $lon The longitude
88
	 * 
89
	 * @return maxh\Nominatim\Reverse
90
	 */
91
	public function latlon($lat, $lon)
92
	{
93
		$this->query['lat'] = $lat;
94
95
		$this->query['lon'] = $lon;
96
97
		return $this;
98
	}
99
100
	/**
101
	 * Level of detail required where 0 is country and 18 is house/building
102
	 * 
103
	 * @param  integer $zoom 
104
	 * 
105
	 * @return maxh\Nominatim\Reverse
106
	 */
107
	public function zoom($zoom)
108
	{
109
		$this->query['zoom'] = strval($zoom);
110
111
		return $this;
112
	}
113
114
	/**
115
	 * Output format for the geometry of results
116
	 * 
117
	 * @param  string $polygon
118
	 * 
119
	 * @return maxh\Nominatim\Reverse
120
	 * @throws maxh\Nominatim\Exceptions\InvalidParameterException  if polygon format is not supported
121
	 */
122 View Code Duplication
	public function polygon($polygon)
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
123
	{
124
		if(in_array($polygon, $this->polygon))
125
		{
126
			$this->query['polygon_'.$polygon] = "1";
127
128
			return $this;
129
		}
130
131
		throw new InvalidParameterException("This polygon format is not supported");
132
	}
133
134
135
}
136