【问题标题】:Not able to get formated_address 'only in English' getting some part of result in regional language无法获得 formated_address 'only in English' 获得区域语言的部分结果
【发布时间】:2019-12-30 07:11:18
【问题描述】:

我正在获取部分地区语言的谷歌地图结果需要英语的完整结果

我尝试通过将语言更改为 'en' 并将区域更改为 'IN' 来访问地图的 API

$geocode=file_get_contents(https://maps.googleapis.com/maps/api/geocode/json?latlng=12.9415554,77.5595728&sensor=false&key=MYAPIGOOGLEKRY&language=en&region=IN);
        $geocode_arr=json_decode($geocode,true);
        if(array_key_exists("0",$geocode_arr['results'])){
        $arr_exp=explode(",",$geocode_arr['results'][0]['formatted_address']);
        $arr_exp=array_slice($arr_exp, -4, 3, true);
        $address_str=implode(",",$arr_exp);
        print_r($address_str); exit;
        }

得到结果:

ಬನಶಂಕರಿ, Bengaluru, Karnataka 560050 
('ಬನಶಂಕರಿ' regional language)

预期结果:

XYZ, Bengaluru, Karnataka 560050

【问题讨论】:

  • 尝试在查询字符串中不给出区域
  • 尝试了同样的方法,仍然获得区域语言ಬನಶಂಕರಿ,班加罗尔,卡纳塔克邦 560050
  • 那你需要完整的地址,否则你也可以选择城市和国家?
  • 需要完整地址
  • 试试$geocode_arr['results'][1]['formatted_address']

标签: php google-maps google-maps-markers google-apis-explorer


【解决方案1】:

这是 Maps API 的预期行为。目前无法仅以英文返回formatted_address。请参阅 Google's post 在 Google Maps API 中对街道地址进行本地化。

现在由 Google Maps Geocoding API 返回的街道地址 偏爱当地语言,同时保持地址易于理解 对于只阅读所请求语言的用户来说尽可能 以及当地人。

如果本地语言和用户语言都使用相同的字母表, Geocoding API 现在将返回街道的本地名称和 地方。例如,使用用户搜索巴西的地址 语言设置为英语现在返回“Avenida Paulista”而不是 “保利斯塔大道”。

所以这个示例请求:

https://maps.googleapis.com/maps/api/geocode/json?address=Avenida+Paulista,+Bela+Vista&key=KEY

返回这个:

formatted_address: "Av. Paulista - Bela Vista, São Paulo - SP, Brazil"

Geocoding documentation 也提到了这一点:

地理编码器会尽力提供一个街道地址,该地址是 用户和本地人都可读。为了实现这个目标,它 返回当地语言的街道地址,音译为 如有必要,用户可读的脚本,观察首选 语言。所有其他地址都以首选语言返回。 地址组件都以相同的语言返回,即 从第一个组件中选择。

希望这能回答你的问题。

【讨论】:

  • 谢谢!乐于助人:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-15
  • 1970-01-01
  • 2021-12-26
  • 2012-06-09
  • 2015-01-10
相关资源
最近更新 更多