8000 Add support of osm tag filter for geocode query · geocoder-php/Geocoder@97511a5 · GitHub
[go: up one dir, main page]

Skip to content

Commit 97511a5

Browse files
committed
Add support of osm tag filter for geocode query
1 parent 0598c64 commit 97511a5

File tree

4 files changed

+19
-1
lines changed

4 files changed

+19
-1
lines changed

src/Provider/Photon/Photon.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ public function geocodeQuery(GeocodeQuery $query): Collection
7373
.'/api?'
7474
.http_build_query([
7575
'q' => $address,
76+
'osm_tag' => $query->getData('osm_tag'),
7677
'limit' => $query->getLimit(),
7778
'lang' => $query->getLocale(),
7879
]);

src/Provider/Photon/Readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ You can use your own photon instance :
2727
// New instance of the provider :
2828
$provider = new Geocoder\Provider\Photon\Photon($httpClient, 'https://your-photon-root-url');
2929
// Run geocode or reverse query
30-
$query = $provider->geocodeQuery(new \Geocoder\Query\GeocodeQuery('Paris'));
30+
$query = $provider->geocodeQuery(\Geocoder\Query\GeocodeQuery::create('Paris'));
3131
$reverseQuery = $provider->reverseQuery(\Geocoder\Query\ReverseQuery::fromCoordinates(48.86036 ,2.33852));
3232
```
3333

Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
s:2187:"{"features":[{"geometry":{"coordinates":[2.2978602225671843,48.8643133],"type":"Point"},"type":"Feature","properties":{"osm_id":79219308,"extent":[2.2971088,48.8647083,2.2984772,48.8639024],"country":"France","city":"Paris","countrycode":"FR","postcode":"75116","locality":"Quartier de Chaillot","type":"house","osm_type":"W","osm_key":"tourism","street":"Rue Gaston de Saint-Paul","district":"Paris","osm_value":"museum","name":"Musée d'Art Moderne de Paris","state":"Île-de-France"}},{"geometry":{"coordinates":[2.3518758,48.850724],"type":"Point"},"type":"Feature","properties":{"osm_id":237003117,"country":"France","city":"Paris","countrycode":"FR","postcode":"75005","locality":"Quartier Saint-Victor","type":"house","osm_type":"N","osm_key":"tourism","street":"Quai de la Tournelle","district":"Paris","osm_value":"museum","name":"Musée de l'Assistance Publique Hôpitaux de Paris","state":"Île-de-France"}},{"geometry":{"coordinates":[2.3450724,48.8640506],"type":"Point"},"type":"Feature","properties":{"osm_id":3087374948,"country":"France","city":"Paris","countrycode":"FR","postcode":"75001","locality":"Les Halles","type":"house","osm_type":"N","osm_key":"tourism","street":"Rue du Jour","district":"Paris","osm_value":"museum","name":"Musée du Barreau de Paris","state":"Île-de-France"}},{"geometry":{"coordinates":[2.3153496472839956,48.866042],"type":"Point"},"type":"Feature","properties":{"osm_id":2778854,"extent":[2.3143339,48.866628,2.3156049,48.8654594],"country":"France","city":"Paris","countrycode":"FR","postcode":"75008","locality":"Quartier des Champs-Élysées","type":"house","osm_type":"R","osm_key":"tourism","street":"Avenue Winston Churchill","district":"Paris","osm_value":"museum","name":"Petit Palais","state":"Île-de-France"}},{"geometry":{"coordinates":[2.3453019,48.8625016],"type":"Point"},"type":"Feature","properties":{"osm_id":1028569468,"country":"France","city":"Paris","countrycode":"FR","postcode":"75001","locality":"Les Halles","type":"house","osm_type":"N","osm_key":"tourism","street":"Rue du Cinéma","district":"Paris","osm_value":"museum","name":"Salle des collections","state":"Île-de-France"}}],"type":"FeatureCollection"}";

src/Provider/Photon/Tests/PhotonTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,22 @@ public function testGeocodeQueryWithNamedResult()
9595
$this->assertEquals('The Sherlock Holmes Museum and shop', $result->getName());
9696
}
9797

98+
public function testGeocodeQueryWithOsmTagFilter()
99+
{
100+
$provider = Photon::withKomootServer($this->getHttpClient());
101+
$query = GeocodeQuery::create('Paris')
102+
->withData('osm_tag', 'tourism:museum')
103+
->withLimit(5);
104+
$results = $provider->geocodeQuery($query);
105+
106+
$this->assertCount(5, $results);
107+
foreach ($results as $result) {
108+
$this->assertInstanceOf(PhotonAddress::class, $result);
109+
$this->assertEquals('tourism', $result->getOSMTag()->key);
110+
$this->assertEquals('museum', $result->getOSMTag()->value);
111+
}
112+
}
113+
98114
public function testReverseQuery()
99115
{
100116
$provider = Photon::withKomootServer($this->getHttpClient());

0 commit comments

Comments
 (0)
0