Google maps Google Place Details API中的语言不一致
我在服务器上使用GooglePlaceDetailsAPI来存储关于一个地方的信息,使用客户端发送的Google maps Google Place Details API中的语言不一致,google-maps,localization,google-places-api,Google Maps,Localization,Google Places Api,我在服务器上使用GooglePlaceDetailsAPI来存储关于一个地方的信息,使用客户端发送的placeId 我面临一个关于结果语言的问题,当地点是一个城市或该城市的地址时,结果语言会有所不同,即使查询中指定了语言。例如: 地点idChIJ53USP0nBhkcRjQ50xhPN_zw是米兰市,API将millan返回为地点,Lombardy返回为行政区(英文名称) 地点idEjBWaWEgZGVsbGEgU3BpZ2EsIE1pbGFuLCBQcm92aW5jZSBvZiBNaWxhb
placeId
我面临一个关于结果语言的问题,当地点是一个城市或该城市的地址时,结果语言会有所不同,即使查询中指定了语言。例如:
- 地点id
是米兰市,API将ChIJ53USP0nBhkcRjQ50xhPN_zw
返回为地点,millan
返回为行政区(英文名称)Lombardy
- 地点id
是米兰的一条街道,API返回EjBWaWEgZGVsbGEgU3BpZ2EsIE1pbGFuLCBQcm92aW5jZSBvZiBNaWxhbiwgSXRhbHk
作为地点,返回Milano
作为行政区域(意大利语名称)Lombardia
更奇怪的是,这两个搜索都将意大利作为国家返回。这是API的预期行为吗?我认为您可以使用一些可选参数来设置所需的语言,例如:
https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&types=food&name=cruise&language=en
附近的搜索请求是以下形式的HTTP URL:
https://maps.googleapis.com/maps/api/place/nearbysearch/output?parameters
放入语言
参数,以便:
https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=-33.8670522,151.1957362&radius=500&types=food&name=cruise&language=en
有关更多详细信息,请参阅。
这是API的预期行为吗?
是的,这是预期的结果。即使您指定了一种语言,它也将仅在有可用语言的情况下返回该语言的响应,如果没有,它将以最初输入的语言返回响应
案例1:
- 米兰:米兰就是一座城市。因此,几乎每种语言都有可用的结果。世界上几乎所有的主要城市都有各种语言的结果。默认情况下,您将以英语获得结果李>
- 德拉斯皮加大道:因为它是一条街道。现在,结果只能用意大利语输入,因为它们很可能是用意大利语输入的
“伦巴第”
转换为中文:
https://maps.googleapis.com/maps/api/place/textsearch/json?query=Lombardia&language=zh-CN&key=你的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详细信息时,您会得到地址\u组件
数组:
"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" ]
}
]
因此,如果您在上面的数组上循环并使用textsearch,则您将获得一种特定语言的几乎一致的地址。我已经设置了语言参数,问题是API忽略了地址的城市部分,除非placeId指定了一个城市。在案例2中,米兰是城市。该信息存储在地址组件中,类型为“locality”,就像案例1中一样。。。所以谷歌知道这两种语言的城市名称,没有理由结果不一致。但是考虑到谷歌已经知道这一点两年了,没有什么可以期待的。我的意思是写
“Via dela Spiga”
,而不是“milano”
,即使你搜索“milano”,你也会得到place\u id=“ChIJ53USP0nBhkcRjQ50xhPN\u zw”
,并且会产生大部分语言(我是指文本搜索)。基本上,我的意思是“Via della Spiga”的地址是用意大利语写的。如果地点只保存在一种语言中,那么它将只返回该语言,但国家不是这样。现在我正在搜索一篇我很久以前读过的关于谷歌如何保存地址的文章。会和你分享吗?当然。目前,我正在考虑使用案例2中给出的城市名称和Autocomplete来获取城市的placeId
,并重用该placeId
,以获取带有地点详细信息的英文名称。有点难看,但至少我会得到一个一致的城市名称。虽然,它看起来有点凌乱,但它会工作。我们对此无能为力,因为这是一个bug。您可以使用与英语相同的文本搜索设置语言,然后您将在一次调用中获得地名的英语名称。我已经检查过它对“米兰”和“伦巴第”都有效。你可以通过为每个人多打一次电话,在英语中获得这两个结果<代码>https://maps.googleapis.com/maps/api/place/textsearch/json?query=Lombardia&language=en&key=YOUR_API_KEYHi,您介意在调用此API的位置共享您的代码片段吗?我在这方面遇到了麻烦。调用此api后,我的代码不会返回任何内容。您好,Nalin,这是一个非常简单的请求,使用PHP中的cURL,指向本文档中指示的URL:。如果你在使用它时遇到问题,最好问一个新问题。是的,我指的是同一个网页来做我的工作。我一回家就会问一个新问题。所有这些代码都在我的个人笔记本电脑上。