Google places api 葡萄牙语googleplaceapi
我正在使用谷歌的PlaceAPI自动完成用户输入的城市名称(网页)。加载API时,将语言(pt BR)作为参数传递,文本框以葡萄牙语正确填充,但当执行方法getPlace()时,它将以英语返回结果(国家和行政区级别) 我不确定问题是否出在谷歌API上,它们的葡萄牙语翻译还是我遗漏了什么。我试图通过西班牙语(es)、英语(en)和意大利语(It)作为语言参数加载它,并按预期工作 以下是我加载的方式:Google places api 葡萄牙语googleplaceapi,google-places-api,google-geocoding-api,Google Places Api,Google Geocoding Api,我正在使用谷歌的PlaceAPI自动完成用户输入的城市名称(网页)。加载API时,将语言(pt BR)作为参数传递,文本框以葡萄牙语正确填充,但当执行方法getPlace()时,它将以英语返回结果(国家和行政区级别) 我不确定问题是否出在谷歌API上,它们的葡萄牙语翻译还是我遗漏了什么。我试图通过西班牙语(es)、英语(en)和意大利语(It)作为语言参数加载它,并按预期工作 以下是我加载的方式: <script src="https://maps.googleapis.com/maps/
<script src="https://maps.googleapis.com/maps/api/js?key=[myapikey]&signed_in=true&libraries=places&callback=initAutocomplete&language=pt-BR" async defer></script>
我还使用反向地理编码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=新字符串[]{“pt-BR”、“es”、“en-us”、“it”};
string responseContent=string.Empty;
foreach(idiomas中的var-idioma)
{
HttpWebRequest-request=WebRequest.Create(requestUri)作为HttpWebRequest;
request.Headers.Add(HttpRequestHeader.AcceptLanguage,idioma);
HttpWebResponse=request.GetResponse()作为HttpWebResponse;
StreamReader=新的StreamReader(response.GetResponseStream());
var jsontext=reader.ReadToEnd().Trim();
responseContent+=jsontext;
var json=JsonConvert.DeserializeObject(jsontext);
}
返回Json(responseContent,JsonRequestBehavior.AllowGet);
我已经查看了文档,支持pt BR:巴西葡萄牙语的语言代码是“pt_BR”,而不是“pt BR”,因此请将链接更改为:
<script src="https://maps.googleapis.com/maps/api/js?key=[myapikey]&signed_in=true&libraries=places&callback=initAutocomplete&language=pt_BR" async defer></script> >
这将为您提供完整的地址,然后您必须解析字符串以获取城市、州、国家信息。链接答案的副本表明,当翻译不可用时,这是occours,但这不是我的情况,因为pt BR中的文本框填写正确。这很奇怪,但可能取决于谷歌的数据结构。谢谢你的回答,但文档上说这是pt BR。不管怎样,我试过你的建议,但也没用。支持的语言:嗯。。我懂了。。不幸的是。。这是谷歌地图中的一个错误..:嘿,看看黑客的解决方案,它可能会再次为你工作,汉克斯!我已经试过了,但是GooglePlacesAPI没有一个一致的显示名返回模式。例如:它返回“圣保罗-SP,巴西”,使用破折号分隔城市名称(圣保罗)和行政区(SP),但如果我搜索纽约,它使用逗号(“纽约,新Iorque,Estados Unidos”)。如果搜索Nova Iorque,则返回“Nova Iorque,Estados Unidos”,不带行政区域。对纽约市的两次搜索都返回相同的place_id。在上述所有情况下,选择语言背后都有很好的理由,请参阅─ Places Autocomplete API是一个例外:返回的术语将匹配用户键入的内容。
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);
<script src="https://maps.googleapis.com/maps/api/js?key=[myapikey]&signed_in=true&libraries=places&callback=initAutocomplete&language=pt_BR" async defer></script> >
$("input:text").val()