Google maps 如何在运行中更改谷歌地图的语言?

Google maps 如何在运行中更改谷歌地图的语言?,google-maps,google-maps-api-3,reverse-geocoding,geocode,Google Maps,Google Maps Api 3,Reverse Geocoding,Geocode,我不想用两种语言(阿拉伯语和英语)来反转地理编码并获取地址,所以我想用一种语言获取地址,然后更改API的语言并获取另一种语言的地址,因为我找不到要发送给地理编码器以确定语言的参数。 有什么建议吗?加载API时,可以通过向API URL追加language=XX来选择一种语言,其中XX是两个字符的语言代码(en表示英语,ar表示阿拉伯语,等等)到API调用中的URL。有关文档,请参阅 这不会让你改变它的飞行,我不认为你能做到这一点。在获得一种语言所需的初始信息后,可以再次尝试加载API。但这似乎会

我不想用两种语言(阿拉伯语和英语)来反转地理编码并获取地址,所以我想用一种语言获取地址,然后更改API的语言并获取另一种语言的地址,因为我找不到要发送给地理编码器以确定语言的参数。
有什么建议吗?

加载API时,可以通过向API URL追加
language=XX
来选择一种语言,其中
XX
是两个字符的语言代码(
en
表示英语,
ar
表示阿拉伯语,等等)到API调用中的URL。有关文档,请参阅

这不会让你改变它的飞行,我不认为你能做到这一点。在获得一种语言所需的初始信息后,可以再次尝试加载API。但这似乎会引起问题


一种更简洁的方法可能是创建一个单独的页面,作为一种web服务。它接受两个参数:语言代码和地址。它使用请求的语言代码加载API,并对地址进行反向地理编码,从而提供结果。您的页面将两次调用类似web服务的东西,每种语言调用一次,然后根据需要使用结果。

正如已经指出的那样,一旦加载地图,这是无法更改的,但是,对于那些有能力刷新页面的人来说,这可能会起作用:

HTML

<script type="text/javascript">
    //load map based on current lang
    var scriptTag = document.createElement('script');

    var currentLang = window.localStorage && window.localStorage.getItem('language');
    var scriptSrc = '//maps.googleapis.com/maps/api/js?libraries=drawing,places&key=YOUR_KEY_HERE';
    if (currentLang)
        scriptSrc = '//maps.googleapis.com/maps/api/js?language=' + currentLang + '&libraries=drawing,places&key=YOUR_KEY_HERE';

    scriptTag.setAttribute('src', scriptSrc);
    scriptTag.setAttribute('async', '');
    document.head.appendChild(scriptTag);
</script>

以下示例以日语显示地图,并将区域设置为日本:

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&language=ja&region=JP">
</script>


我创建了一个函数,可以在运行时更改谷歌地图的语言。
由于它返回一个
承诺
,因此您可以轻松地等待API加载后再执行其他代码


使用示例

setAPILanguage('fr',['places'],'xxxxxx')。然后(()=>{
//API在这里加载
});

文档

/**
*更改Google地图API的语言
*@param{String}lang-谷歌地图新语言
*@param{String[]}库-所需库的列表
*@param{String}key-您的API密钥
*@returns{Promise}-在Google Maps API完成加载后解析
*/

来源

const setAPILanguage=(语言、库、键)=>{
//销毁旧API
document.querySelectorAll('script[src^='https://maps.googleapis.com“]”)。forEach(脚本=>{
script.remove();
});
如果(谷歌)删除google.maps;
//生成新的谷歌地图API脚本
让newAPI=document.createElement('script');
newAPI.src=https://maps.googleapis.com/maps/api/js?libraries=“+libraries.join(”,“)+”&key=“+key+”&language=“+lang+”&callback=googleMapsAPILoaded';
//谷歌地图API src的回调
window.googleMapsAPILoaded=()=>{
let event=new CustomEvent('googleMapsAPILoaded');
窗口。dispatchEvent(事件);
}
//等待执行回调
让apiLoaded=新承诺(resolve=>{
window.addEventListener('googleMapsAPILoaded',()=>{
解决();
});
});
//启动脚本
document.querySelector('head').appendChild(newAPI);
返回已加载的文件;
}


哦,傻瓜,我不敢相信这仍然是真的,他们可以解决任何数学问题,并做到这一点。2017年找不到这方面的任何更新(此答案已过去6年)。不能动态更改语言,不能动态设置API密钥等等@trott你知道今天如何做得更好吗?我为这个问题创建了一个非常有用的函数,因为我自己也有这个问题。我加上它作为答案。你介意在你的答案底部加一个链接吗?
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&language=ja&region=JP">
</script>