2015-10-16 19 views
9

Używam Google Place API do automatycznego uzupełniania nazw miast wpisywanych przez użytkowników (strona internetowa). Interfejs API jest ładowany, przekazując język (pt-BR) jako parametr, a pole tekstowe jest poprawnie wypełniane po portugalsku, ale po wykonaniu metody getPlace() zwraca wyniki (kraj i poziom_administracyjny_1) w języku angielskim.Google Place API w języku portugalskim

Nie jestem pewien, czy problemem jest Google API, ich tłumaczenie na portugalski lub coś, co przegapiłem. Próbowałem załadować go przechodząc przez hiszpański (es), angielski (en) i włoski (it) jako parametr języka i działa zgodnie z oczekiwaniami.

Oto jak wczytuję:

<script src="https://maps.googleapis.com/maps/api/js?key=[myapikey]&signed_in=true&libraries=places&callback=initAutocomplete&language=pt-BR" async defer></script> 

... i jak ja dostaję wyniki na podstawie kodu Sample Google:

// Get the place details from the autocomplete object. 
var place = autocomplete.getPlace(); 

Używam również odwrotnego geokodowania API przekazanie identyfikatora place_id i problemu jest taki sam (kod C#).

var apikey = "[myserverapikey]"; 
    var requestUri = string.Format("https://maps.googleapis.com/maps/api/geocode/json?place_id={0}&key={1}", place_id, apikey); 

    var idiomas = new string[] {"pt-BR", "es", "en-us", "it"}; 

    string responseContent = string.Empty; 
    foreach (var idioma in idiomas) 
    { 
     HttpWebRequest request = WebRequest.Create(requestUri) as HttpWebRequest; 
     request.Headers.Add(HttpRequestHeader.AcceptLanguage, idioma); 
     HttpWebResponse response = request.GetResponse() as HttpWebResponse; 
     StreamReader reader = new StreamReader(response.GetResponseStream()); 

     var jsontext = reader.ReadToEnd().Trim(); 

     responseContent += jsontext; 

     var json = JsonConvert.DeserializeObject<GoogleGeoCodeResponse>(jsontext); 


    } 

    return Json(responseContent, JsonRequestBehavior.AllowGet); 

Sprawdziłem dokumentację i PT-BR rozwiązywane są: Google API Supported Languages

+0

Duplikat adresu http://stackoverflow.com/questions/27567757/inconsistent-language-in-google-place-details-api – aergistal

+0

Połączona odpowiedź mówi, że występuje ona, gdy tłumaczenie jest niedostępne, ale nie jest to moja sprawa, ponieważ pole tekstowe jest poprawnie wypełniane w pt-BR. To dziwne, ale możliwe, w zależności od struktury danych Google. –

Odpowiedz

0

Kod języka dla brazylijskim portugalskim jest "pt_BR" zamiast "pl-PL" tak zmienić link:

<script src="https://maps.googleapis.com/maps/api/js?key=[myapikey]&signed_in=true&libraries=places&callback=initAutocomplete&language=pt_BR" async defer></script> > 

Okazuje się, myliłem ... albo PT-BR lub praca pt_BR.

getPlace nie zwraca wyniki w zależności od języka, to istniejący błąd w mapach google: https://code.google.com/p/gmaps-api-issues/issues/detail?id=7891

hacky rozwiązaniem jest wejście do zapoznania się z autouzupełniania, ponieważ jest przekształcany w określonym języku. Jeśli korzystasz z pola wyszukiwania autouzupełniania można kwerendy w polu tekstu wejściowego, ma tylko jeden typ sygnału wejściowego tekstu .. więc można wykonać następujące czynności, aby uzyskać pełny adres w języku określone: ​​

$("input:text").val() 

Otrzymasz pełny adres, po którym będziesz musiał przeanalizować ciąg znaków, aby uzyskać informacje o mieście, stanie, kraju.

+0

Dziękuję za odpowiedź, ale w dokumentacji jest napisane pt-BR. W każdym razie spróbowałem twojej sugestii i to też nie działa. Obsługiwane języki: https://developers.google.com/maps/faq#languagesupport –

+1

hmm .. widzę ... niestety .. to jest błąd w mapach google ..: https://code.google.com/p/gmaps-api-issues/issues/detail? id = 7891 – Rohit

+1

hej, sprawdź rozwiązanie hacky, może ci pomóc – Rohit