Geocoder i język zwracanych wyników

Bawię się Geocoderem i próbuję zmusić go do zwracania wyników po angielsku.

Język mam ustawiony:

2.2.0 :009 > Geocoder.config
 => {:timeout=>3, :lookup=>:google, :ip_lookup=>:freegeoip, :language=>:en, :http_headers=>{}, :use_https=>false, :http_proxy=>nil, :https_proxy=>nil, :api_key=>nil, :cache=>nil, :cache_prefix=>"geocoder:", :always_raise=>[], :units=>:mi, :distances=>:linear} 

I niby wszystko działa, bo:

2.2.0 :010 > Geocoder.search("Warszawa, Polska").first.city
 => "Warsaw" 

Ale już:

2.2.0 :014 > Geocoder.search("Stadion Narodowy, Warszawa, Polska").first.city
 => "Warszawa" 

Co ciekawe wystarczy dodać kod pocztowy i zamiast Warsaw dostaję Warszawa:

2.2.0 :034 > Geocoder.search("02-094 Warszawa, Poland").first.city
 => "Warszawa" 

Macie jakiś pomysł dlaczego? I jak zmusić go, żeby wyniki były po angielsku?

Tak próbowałeś? http://stackoverflow.com/a/25612580

Niestety :frowning:

2.2.0 :006 > Geocoder.search("Stadion Narodowy, Warszawa, Polska", language: "en").first.city
 => "Warszawa" 
2.2.0 :007 > Geocoder.search("Stadion Narodowy, Warszawa, Polska", language: :en).first.city
 => "Warszawa"

Z doświadczenia wiem, że Google Geocoder zwraca bardzo różne wyniki dla różnych zapytań o to samo miejsce. Zarówno po nazwie, adresie, jak i współrzędnych. Czasami zdarzyło się, że zwracał nazwy pisane wielkimi literami… Więc niestety przypuszczam, że możesz nie znaleźć rozwiązania swojego problemu :worried: Poniekąd związane jest to z dokładnością wyniku (czasami jest on interpolowany): https://developers.google.com/maps/documentation/geocoding/?csw=1#Results (pole location_type)

rozpoznawanie języka pierwszej zmiennej ma większą wagę od parametru języka, kiedys miałem podobny problem z APi

2.1.5 :010 > Geocoder.search("National Stadium,Warszawa, Polska", language: "en").first.city 
 => "Warsaw" 
2.1.5 :011 > Geocoder.search("Stadion Narodowy,Warszawa, Polska", language: "en").first.city 
 => "Warszawa" 
2.1.5 :012 > Geocoder.search("National Stadium,Warszawa, Polska", language: "pl").first.city 
 => "Warszawa" 
2.1.5 :013 > Geocoder.search("National Stadium,Warszawa, Polska", language: "pl").first.city 
 => "Warszawa" 
1 Like

Jakoś to ominąłem, niezbyt elegancki, ale co zrobić. Tak na prawdę interesują mnie city, state i country. Więc robię dwa razy parsowanie. Raz całego adresu, wyciągam to co mnie interesuje: `{city: “Warszawa”, state: “mazowieckie”, country: “Polska”} i potem drugi raz wysyłam tylko te trzy elementy i ładnie zwraca mi już po angielsku.

A nie lepiej dodać parametr language do searcha? :slight_smile: