1515use Geocoder \Dumper \Wkt ;
1616use Geocoder \Geocoder ;
1717use Geocoder \Laravel \Exceptions \InvalidDumperException ;
18+ use Geocoder \Laravel \ProviderAndDumperAggregator ;
1819use Geocoder \ProviderAggregator ;
20+ use Geocoder \Model \AddressCollection ;
1921use Illuminate \Support \Collection ;
2022
2123/**
2224 * @author Mike Bronner <hello@genealabs.com>
2325 */
24- class ProviderAndDumperAggregator extends ProviderAggregator implements Geocoder
26+ class ProviderAndDumperAggregator
2527{
26- /**
27- * @var \Geocoder\Model\AddressCollection
28- */
2928 protected $ results ;
29+ protected $ aggregator ;
3030
31- /**
32- * @return array
33- */
34- public function all ()
31+ public function __construct (int $ limit = Geocoder::DEFAULT_RESULT_LIMIT )
32+ {
33+ $ this ->aggregator = new ProviderAggregator ($ limit );
34+ }
35+
36+ public function all () : array
3537 {
3638 return $ this ->results ->all ();
3739 }
3840
39- /**
40- * @param $dumper
41- * @ return Collection
42- * @throws InvalidDumperException
43- */
44- public function dump ($ dumper )
41+ public function get () : AddressCollection
42+ {
43+ return $ this -> results ;
44+ }
45+
46+ public function dump ($ dumper ) : Collection
4547 {
4648 $ dumperClasses = collect ([
4749 'geojson ' => GeoJson::class,
@@ -68,48 +70,89 @@ public function dump($dumper)
6870 });
6971 }
7072
71- /**
72- * @param string
73- * @return ProviderAndDumperAggregator
74- */
75- public function geocode ($ value )
73+ public function geocodeQuery ($ query )
74+ {
75+ return $ this ->aggregator ->geocodeQuery ($ query );
76+ }
77+
78+ public function reverseQuery ($ query )
79+ {
80+ return $ this ->aggregator ->reverseQuery ($ query );
81+ }
82+
83+ public function getName ()
84+ {
85+ return $ this ->aggregator ->getName ();
86+ }
87+
88+ public function geocode (string $ value ) : self
7689 {
7790 $ cacheId = str_slug ($ value );
7891 $ this ->results = cache ()->remember (
7992 "geocoder- {$ cacheId }" ,
8093 config ('geocoder.cache-duraction ' , 0 ),
8194 function () use ($ value ) {
82- return parent :: geocode ($ value );
95+ return $ this -> aggregator -> geocode ($ value );
8396 }
8497 );
8598
8699 return $ this ;
87100 }
88101
89- /**
90- * @return \Geocoder\Model\AddressCollection
91- */
92- public function get ()
93- {
94- return $ this ->results ;
95- }
96-
97- /**
98- * @param float
99- * @param float
100- * @return ProviderAndDumperAggregator
101- */
102- public function reverse ($ latitude , $ longitude )
102+ public function reverse (float $ latitude , float $ longitude ) : self
103103 {
104104 $ cacheId = str_slug ("{$ latitude }- {$ longitude }" );
105105 $ this ->results = cache ()->remember (
106106 "geocoder- {$ cacheId }" ,
107107 config ('geocoder.cache-duraction ' , 0 ),
108108 function () use ($ latitude , $ longitude ) {
109- return parent :: reverse ($ latitude , $ longitude );
109+ return $ this -> aggregator -> reverse ($ latitude , $ longitude );
110110 }
111111 );
112112
113113 return $ this ;
114114 }
115+
116+ public function limit ($ limit )
117+ {
118+ $ this ->aggregator ->limit ($ limit );
119+
120+ return $ this ;
121+ }
122+
123+ public function getLimit ()
124+ {
125+ return $ this ->aggregator ->getLimit ();
126+ }
127+
128+ public function registerProvider ($ provider )
129+ {
130+ $ this ->aggregator ->registerProvider ($ provider );
131+
132+ return $ this ;
133+ }
134+
135+ public function registerProviders ($ providers = [])
136+ {
137+ $ this ->aggregator ->registerProviders ($ providers );
138+
139+ return $ this ;
140+ }
141+
142+ public function using ($ name )
143+ {
144+ $ this ->aggregator ->using ($ name );
145+
146+ return $ this ;
147+ }
148+
149+ public function getProviders ()
150+ {
151+ return $ this ->aggregator ->getProviders ();
152+ }
153+
154+ protected function getProvider ()
155+ {
156+ return $ this ->aggregator ->getProvider ();
157+ }
115158}
0 commit comments