Class: Geocoder::Result::Yandex
- Inherits:
-
Base
- Object
- Base
- Geocoder::Result::Yandex
show all
- Defined in:
- lib/geocoder/results/yandex.rb
Constant Summary
collapse
- ADDRESS_DETAILS =
It may resides on the top (ADDRESS_DETAILS) level. example: ‘Baltic Sea’ “AddressDetails”: {
"Locality": {
"Premise": {
"PremiseName": "Baltic Sea"
}
}
}
%w[
GeoObject metaDataProperty GeocoderMetaData
AddressDetails
].freeze
- COUNTRY_LEVEL =
On COUNTRY_LEVEL. example: ‘Potomak’ “AddressDetails”: {
"Country": {
"AddressLine": "reka Potomak",
"CountryNameCode": "US",
"CountryName": "United States of America",
"Locality": {
"Premise": {
"PremiseName": "reka Potomak"
}
}
}
}
%w[
GeoObject metaDataProperty GeocoderMetaData
AddressDetails Country
].freeze
- ADMIN_LEVEL =
On ADMIN_LEVEL (usually state or city) example: ‘Moscow, Tverskaya’ “AddressDetails”: {
"Country": {
"AddressLine": "Moscow, Tverskaya Street",
"CountryNameCode": "RU",
"CountryName": "Russia",
"AdministrativeArea": {
"AdministrativeAreaName": "Moscow",
"Locality": {
"LocalityName": "Moscow",
"Thoroughfare": {
"ThoroughfareName": "Tverskaya Street"
}
}
}
}
}
%w[
GeoObject metaDataProperty GeocoderMetaData
AddressDetails Country
AdministrativeArea
].freeze
- SUBADMIN_LEVEL =
On SUBADMIN_LEVEL (may refer to urban district) example: ‘Moscow Region, Krasnogorsk’ “AddressDetails”: {
"Country": {
"AddressLine": "Moscow Region, Krasnogorsk",
"CountryNameCode": "RU",
"CountryName": "Russia",
"AdministrativeArea": {
"AdministrativeAreaName": "Moscow Region",
"SubAdministrativeArea": {
"SubAdministrativeAreaName": "gorodskoy okrug Krasnogorsk",
"Locality": {
"LocalityName": "Krasnogorsk"
}
}
}
}
}
%w[
GeoObject metaDataProperty GeocoderMetaData
AddressDetails Country
AdministrativeArea
SubAdministrativeArea
].freeze
- DEPENDENT_LOCALITY_1 =
On DEPENDENT_LOCALITY_1 (may refer to district of city) example: ‘Paris, Etienne Marcel’ “AddressDetails”: {
"Country": {
"AddressLine": "Île-de-France, Paris, 1er Arrondissement, Rue Étienne Marcel",
"CountryNameCode": "FR",
"CountryName": "France",
"AdministrativeArea": {
"AdministrativeAreaName": "Île-de-France",
"Locality": {
"LocalityName": "Paris",
"DependentLocality": {
"DependentLocalityName": "1er Arrondissement",
"Thoroughfare": {
"ThoroughfareName": "Rue Étienne Marcel"
}
}
}
}
}
}
%w[
GeoObject metaDataProperty GeocoderMetaData
AddressDetails Country
AdministrativeArea Locality
DependentLocality
].freeze
- DEPENDENT_LOCALITY_2 =
“AddressDetails”: {
"Country": {
"AddressLine": "İstanbul, Fatih, Saraç İshak Mah., Mabeyinci Yokuşu, 17",
"CountryNameCode": "TR",
"CountryName": "Turkey",
"AdministrativeArea": {
"AdministrativeAreaName": "İstanbul",
"SubAdministrativeArea": {
"SubAdministrativeAreaName": "Fatih",
"Locality": {
"DependentLocality": {
"DependentLocalityName": "Saraç İshak Mah.",
"Thoroughfare": {
"ThoroughfareName": "Mabeyinci Yokuşu",
"Premise": {
"PremiseNumber": "17"
}
}
}
}
}
}
}
}
%w[
GeoObject metaDataProperty GeocoderMetaData
AddressDetails Country
AdministrativeArea
SubAdministrativeArea Locality
DependentLocality
].freeze
Instance Attribute Summary
Attributes inherited from Base
#cache_hit, #data
Instance Method Summary
collapse
Methods inherited from Base
#initialize, #latitude, #longitude, #province, #province_code
Instance Method Details
#address(_format = :full) ⇒ Object
169
170
171
|
# File 'lib/geocoder/results/yandex.rb', line 169
def address(_format = :full)
@data['GeoObject']['metaDataProperty']['GeocoderMetaData']['text']
end
|
#city ⇒ Object
173
174
175
176
177
178
179
180
181
182
183
184
|
# File 'lib/geocoder/results/yandex.rb', line 173
def city
result =
if state.empty?
find_in_hash(@data, *COUNTRY_LEVEL, 'Locality', 'LocalityName')
elsif sub_state.empty?
find_in_hash(@data, *ADMIN_LEVEL, 'Locality', 'LocalityName')
else
find_in_hash(@data, *SUBADMIN_LEVEL, 'Locality', 'LocalityName')
end
result || ""
end
|
#coordinates ⇒ Object
165
166
167
|
# File 'lib/geocoder/results/yandex.rb', line 165
def coordinates
@data['GeoObject']['Point']['pos'].split(' ').reverse.map(&:to_f)
end
|
#country ⇒ Object
186
187
188
|
# File 'lib/geocoder/results/yandex.rb', line 186
def country
find_in_hash(@data, *COUNTRY_LEVEL, 'CountryName') || ""
end
|
#country_code ⇒ Object
190
191
192
|
# File 'lib/geocoder/results/yandex.rb', line 190
def country_code
find_in_hash(@data, *COUNTRY_LEVEL, 'CountryNameCode') || ""
end
|
#kind ⇒ Object
224
225
226
|
# File 'lib/geocoder/results/yandex.rb', line 224
def kind
@data['GeoObject']['metaDataProperty']['GeocoderMetaData']['kind']
end
|
#postal_code ⇒ Object
219
220
221
222
|
# File 'lib/geocoder/results/yandex.rb', line 219
def postal_code
return "" unless premise.is_a?(Hash)
find_in_hash(premise, 'PostalCode', 'PostalCodeNumber') || ""
end
|
#precision ⇒ Object
228
229
230
|
# File 'lib/geocoder/results/yandex.rb', line 228
def precision
@data['GeoObject']['metaDataProperty']['GeocoderMetaData']['precision']
end
|
#premise_name ⇒ Object
215
216
217
|
# File 'lib/geocoder/results/yandex.rb', line 215
def premise_name
premise.is_a?(Hash) ? premise.fetch('PremiseName', "") : ""
end
|
#state ⇒ Object
194
195
196
|
# File 'lib/geocoder/results/yandex.rb', line 194
def state
find_in_hash(@data, *ADMIN_LEVEL, 'AdministrativeAreaName') || ""
end
|
#state_code ⇒ Object
203
204
205
|
# File 'lib/geocoder/results/yandex.rb', line 203
def state_code
""
end
|
#street ⇒ Object
207
208
209
|
# File 'lib/geocoder/results/yandex.rb', line 207
def street
thoroughfare_data.is_a?(Hash) ? thoroughfare_data['ThoroughfareName'] : ""
end
|
#street_number ⇒ Object
211
212
213
|
# File 'lib/geocoder/results/yandex.rb', line 211
def street_number
premise.is_a?(Hash) ? premise.fetch('PremiseNumber', "") : ""
end
|
#sub_state ⇒ Object
198
199
200
201
|
# File 'lib/geocoder/results/yandex.rb', line 198
def sub_state
return "" if state.empty?
find_in_hash(@data, *SUBADMIN_LEVEL, 'SubAdministrativeAreaName') || ""
end
|
#viewport ⇒ Object
232
233
234
235
236
237
|
# File 'lib/geocoder/results/yandex.rb', line 232
def viewport
envelope = @data['GeoObject']['boundedBy']['Envelope'] || fail
east, north = envelope['upperCorner'].split(' ').map(&:to_f)
west, south = envelope['lowerCorner'].split(' ').map(&:to_f)
[south, west, north, east]
end
|