我不想反向地理编码并以阿拉伯语和英语两种语言获取地址,所以我想以一种语言获取它,然后更改 API 的语言并以另一种语言获取地址,因为我找不到参数发送到地理编码器以确定语言。有什么建议么?
问问题
41284 次
4 回答
26
当您加载 API 时,可以通过将两个字符的语言代码(对于英语、阿拉伯语等)附加language=XX
到 API 调用中的 URL来选择语言。有关文档,请参阅http://code.google.com/apis/maps/documentation/javascript/basics.html#Localization。XX
en
ar
这不会让您即时更改它,而且我认为您无法做到这一点。在以一种语言获得所需的初始信息后,您可以尝试再次加载 API。但这似乎可能会导致问题。
一种更简洁的方法可能是创建一个单独的页面,为您充当一种 Web 服务。它接受两个参数:语言代码和地址。它使用请求的语言代码加载 API,并对地址进行反向地理编码,提供结果。您的页面会调用这个类似 Web 服务的东西两次,每种语言调用一次,然后根据需要使用结果。
于 2011-08-15T15:22:32.357 回答
10
我创建了一个函数来在运行时更改谷歌地图的语言。
由于它返回 a Promise
,因此您可以轻松地等到 API 加载完成后再执行一些其他代码。
使用示例
setAPILanguage('fr', ['places'], 'xxxxxx').then(() => {
//The API is loaded here
});
文档
/**
* Changes the language of the Google Maps API
* @param {String} lang - Google Maps new language
* @param {String[]} libraries - The list of libraries needed
* @param {String} key - Your API key
* @returns {Promise} - Resolves when Google Maps API has finished loading
*/
资源
const setAPILanguage = (lang, libraries, key) => {
//Destroy old API
document.querySelectorAll('script[src^="https://maps.googleapis.com"]').forEach(script => {
script.remove();
});
if(google) delete google.maps;
//Generate new Google Maps API script
let newAPI = document.createElement('script');
newAPI.src = 'https://maps.googleapis.com/maps/api/js?libraries=' + libraries.join(',') + '&key=' + key + '&language=' + lang + '&callback=googleMapsAPILoaded';
//Callback for the Google Maps API src
window.googleMapsAPILoaded = () => {
let event = new CustomEvent('googleMapsAPILoaded');
window.dispatchEvent(event);
}
//Wait for the callback to be executed
let apiLoaded = new Promise(resolve => {
window.addEventListener('googleMapsAPILoaded', () => {
resolve();
});
});
//Start the script
document.querySelector('head').appendChild(newAPI);
return apiLoaded;
}
于 2018-09-07T08:33:40.887 回答
2
正如已经指出的那样,一旦加载地图就无法更改,但是,对于那些负担得起页面刷新的人来说,这可以工作:
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>
JS
function changeLangAndReload(lang) {
window.localStorage.setItem('language', lang);
window.location.reload();//or use your preferred way to refresh
}
于 2015-11-13T20:05:42.013 回答
0
以下示例以日语显示地图并将区域设置为日本:
<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&language=ja®ion=JP">
</script>
于 2017-02-17T07:15:45.927 回答