Is this the expected behavior of the API?
是的,这是预期的结果。即使您指定了一种语言,只有在有可用语言的情况下,它才会返回该语言的响应,如果没有可用的语言,它就会以最初输入的语言返回响应。
Case 1:
-
Milan:米兰是一座城市。因此,几乎每种语言都有可用的结果。世界上几乎所有主要城市都有每种语言的结果。默认情况下,您将获得英文结果。
Case 2:
-
斯皮加大道: 因为是街道。目前,结果仅提供意大利语版本,因为它们很可能是用意大利语输入的。
搜索时的结果“斯皮加大道”在谷歌地图中:
要了解更多相关信息:
将地点信息翻译成请求指定的语言 https://code.google.com/p/gmaps-api-issues/issues/detail?id=3987。在此请求一个功能,告诉开发人员结果采用哪种语言,以便他们可以相应地处理数据,我个人认为在问题尚未解决之前这会很好。
语言参数到位/详细信息请求不起作用 https://code.google.com/p/gmaps-api-issues/issues/detail?id=3444
上述两个问题都有大约2年的历史了。然而,谷歌无法解决这个问题。
可能解决此问题的一种方法是使用文本搜索 https://developers.google.com/places/documentation/search#TextSearchRequests:
因为您可以使用文本搜索将大部分行政区域/城市转换为任何语言名称:
`https://maps.googleapis.com/maps/api/place/textsearch/json?query=Lombardia&language=Your_language&key=YOUR_API_KEY`
Example:转换"Lombardia"
into a 中文:
https://maps.googleapis.com/maps/api/place/textsearch/json?query=Lombardia&language=zh-CN&key=YOUR_API
{
"html_attributions" : [],
"results" : [
{
"formatted_address" : "意大利伦巴第",
"geometry" : {
"location" : {
"lat" : 45.47906709999999,
"lng" : 9.8452433
},
"viewport" : {
"northeast" : {
"lat" : 46.6351853,
"lng" : 11.4276993
},
"southwest" : {
"lat" : 44.6796491,
"lng" : 8.4978605
}
}
},
"icon" : "http://maps.gstatic.com/mapfiles/place_api/icons/geocode-71.png",
"id" : "02401d0909d69ca5c69de799e193caf84acc41f9",
"name" : "伦巴第",
"place_id" : "ChIJf4M-GsNEgUcR1JMVKCIm8qY",
"reference" : "CoQBfQAAAEKCAV-1Ec-V2ZfnWsCk_elhlEXckc_k94jBYlU7k5ivhrqPlWd24aSAa5fqNTfwKKhU0wSsZFv42aMm1BrG5wEwZNGKwFqELxMEt0ye7KFfBgVtfHZbqeiBx3hEH8Iq60wwW--edqpROkBTjHrxIwisCGJwhCzKKkQ9H6FdfW_aEhAnmI0ZOFk1KGaGms4IqTOiGhRX5iErBIwnmLos4U9Ggs325MmcEA",
"types" : [ "administrative_area_level_1", "political" ]
}
],
"status" : "OK"
}
伦巴第大区中文是意大利伦巴第
当您搜索时placeID细节,你得到address_components
array:
"address_components" : [
{
"long_name" : "Via della Spiga",
"short_name" : "Via della Spiga",
"types" : [ "route" ]
},
{
"long_name" : "Milano",
"short_name" : "Milano",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Milano",
"short_name" : "MI",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Lombardia",
"short_name" : "Lombardia",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Italy",
"short_name" : "IT",
"types" : [ "country", "political" ]
}
]
所以如果你loop在上面的数组上并使用文本搜索 then 您将获得特定语言几乎一致的地址。