【发布时间】:2016-01-15 18:21:52
【问题描述】:
我正在使用 Google 的 Place API 来自动完成用户输入的城市名称(网页)。加载 API 时将语言 (pt-BR) 作为参数传递,并且文本框以葡萄牙语正确填写,但是当方法 getPlace() 执行时,它会以英语返回结果(国家和行政区域级别_1)。
我不确定问题出在 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 的示例代码获得结果:
// Get the place details from the autocomplete object.
var place = autocomplete.getPlace();
我也在使用反向地理编码 API 传递 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
【问题讨论】:
-
链接的答案说当翻译不可用时会发生这种情况,但这不是我的情况,因为文本框在 pt-BR 中正确填写。这很奇怪,但可能取决于 Google 的数据结构。
标签: google-places-api google-geocoding-api