GoogleのPlace APIを使用して、ユーザー(ウェブページ)が入力した都市名を自動完成します。 APIはパラメータとして言語(pt-BR)を渡してロードされ、ポルトガル語でテキストボックスが正しく入力されていますが、getPlace()メソッドが実行されると結果(countryおよびadministrative_area_level_1)が英語で返されます。Google Place API(ポルトガル語)
問題がGoogle APIか、ポルトガル語への翻訳か私が逃したものかどうかはわかりません。私は言語のパラメータとしてスペイン語(es)、英語(en)、イタリア語(it)を渡し、期待どおりに動作するように読み込もうとしました。
<script src="https://maps.googleapis.com/maps/api/js?key=[myapikey]&signed_in=true&libraries=places&callback=initAutocomplete&language=pt-BR" async defer></script>
...とどのように私はGoogleのサンプルコードに基づいて結果を取得しています:私は、逆ジオコーディングAPIを使用してい
// Get the place details from the autocomplete object.
var place = autocomplete.getPlace();
ここ
は、私がロードしています方法ですplace_idを渡して問題は同じです(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);
私はドキュメントをチェックしましたし、PT-BRがサポートされています。Google API Supported Languages
重複しているhttp://stackoverflow.com/questions/27567757/inconsistent-language-in-google-place-details-api – aergistal
リンクされた回答では、翻訳が利用できないときにこれが発生すると言われていますが、テキストボックスはpt-BRで正しく入力されています。それは奇妙ですが、Googleのデータ構造によっては可能です。 –