Skip to content

Commit 08a75ba

Browse files
committed
Add support for cities in Yandex Provider
1 parent 94a4315 commit 08a75ba

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

src/Geocoder/Provider/YandexProvider.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ protected function executeQuery($query)
111111
$item = $item['GeoObject'];
112112
$country = $item['metaDataProperty']['GeocoderMetaData']['AddressDetails']['Country'];
113113
$addressDetails = isset($country['AdministrativeArea']) ? $country['AdministrativeArea'] : $country;
114-
$locality = isset($addressDetails['Locality']['Thoroughfare']) ? $addressDetails['Locality']['Thoroughfare'] : null;
114+
$locality = isset($addressDetails['Locality']) ? $addressDetails['Locality'] : null;
115+
$thoroughfare = isset($locality['Thoroughfare']) ? $locality['Thoroughfare'] : null;
115116
$coordinates = explode(' ', $item['Point']['pos']);
116117
$bounds = null;
117118
$lowerCorner = explode(' ', $item['boundedBy']['Envelope']['lowerCorner']);
@@ -127,8 +128,9 @@ protected function executeQuery($query)
127128
'latitude' => isset($coordinates[1]) ? $coordinates[1] : null,
128129
'longitude' => isset($coordinates[0]) ? $coordinates[0] : null,
129130
'bounds' => $bounds,
130-
'streetNumber' => isset($locality['Premise']['PremiseNumber']) ? $locality['Premise']['PremiseNumber'] : null,
131-
'streetName' => isset($locality['ThoroughfareName']) ? $locality['ThoroughfareName'] : null,
131+
'streetNumber' => isset($thoroughfare['Premise']['PremiseNumber']) ? $thoroughfare['Premise']['PremiseNumber'] : null,
132+
'streetName' => isset($thoroughfare['ThoroughfareName']) ? $thoroughfare['ThoroughfareName'] : null,
133+
'city' => isset($locality['LocalityName']) ? $locality['LocalityName'] : null,
132134
'cityDistrict' => isset($addressDetails['AdministrativeAreaName']) ? $addressDetails['AdministrativeAreaName'] : null,
133135
'country' => isset($country['CountryName']) ? $country['CountryName'] : null,
134136
'countryCode' => isset($country['CountryNameCode']) ? $country['CountryNameCode'] : null,

tests/Geocoder/Tests/Provider/YandexProviderTest.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,12 +149,12 @@ public function testGetGeocodedDataWithRealAddressWithUALocale()
149149
$this->assertNull($results[0]['streetNumber']);
150150
$this->assertEquals('Столичная область', $results[0]['cityDistrict']);
151151
$this->assertNull($results[0]['streetName']);
152+
$this->assertEquals('Копенгаген', $results[0]['city']);
152153
$this->assertEquals('Данія', $results[0]['country']);
153154
$this->assertEquals('DK', $results[0]['countryCode']);
154155

155156
// not provided
156157
$this->assertNull($results[0]['zipcode']);
157-
$this->assertNull($results[0]['city']);
158158
$this->assertNull($results[0]['region']);
159159
$this->assertNull($results[0]['regionCode']);
160160
$this->assertNull($results[0]['timezone']);
@@ -193,12 +193,12 @@ public function testGetGeocodedDataWithRealAddressWithUSLocale()
193193
$this->assertEquals(-77.012453, $results[0]['bounds']['east'], '', 0.01);
194194
$this->assertEquals('District of Columbia', $results[0]['cityDistrict']);
195195
$this->assertEquals('Pennsylvania Ave NW', $results[0]['streetName']);
196+
$this->assertEquals('Washington', $results[0]['city']);
196197
$this->assertEquals('United States', $results[0]['country']);
197198
$this->assertEquals('US', $results[0]['countryCode']);
198199

199200
// not provided
200201
$this->assertNull($results[0]['zipcode']);
201-
$this->assertNull($results[0]['city']);
202202
$this->assertNull($results[0]['region']);
203203
$this->assertNull($results[0]['regionCode']);
204204
$this->assertNull($results[0]['timezone']);
@@ -239,12 +239,12 @@ public function testGetGeocodedDataWithRealAddressWithBYLocale()
239239
$this->assertEquals(19, $result['streetNumber']);
240240
$this->assertNull($result['cityDistrict']);
241241
$this->assertEquals('улица Ленина', $result['streetName']);
242+
$this->assertEquals('Минск', $result['city']);
242243
$this->assertEquals('Беларусь', $result['country']);
243244
$this->assertEquals('BY', $result['countryCode']);
244245

245246
// not provided
246247
$this->assertNull($result['zipcode']);
247-
$this->assertNull($result['city']);
248248
$this->assertNull($result['region']);
249249
$this->assertNull($result['regionCode']);
250250
$this->assertNull($result['timezone']);
@@ -380,12 +380,12 @@ public function testGetReversedDataWithRealCoordinatesWithUALocaleAndHouseTopony
380380
$this->assertEquals(36, $results[0]['streetNumber']);
381381
$this->assertEquals('Исконная Финляндия', $results[0]['cityDistrict']);
382382
//$this->assertEquals('Bangårdsgatan', $results[0]['streetName']);
383+
$this->assertEquals('Турку', $results[0]['city']);
383384
$this->assertEquals('Фінляндія', $results[0]['country']);
384385
$this->assertEquals('FI', $results[0]['countryCode']);
385386

386387
// not provided
387388
$this->assertNull($results[0]['zipcode']);
388-
$this->assertNull($results[0]['city']);
389389
$this->assertNull($results[0]['region']);
390390
$this->assertNull($results[0]['regionCode']);
391391
$this->assertNull($results[0]['timezone']);

0 commit comments

Comments
 (0)