Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图动态语言变化_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 谷歌地图动态语言变化

Javascript 谷歌地图动态语言变化,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我正在为我的一个项目使用backbone.js,我正在使用GoogleMapAPI版本3。根据一些ajax响应,我想动态更改GoogleMap语言。有什么办法吗?如有任何建议,我们将不胜感激。提前感谢。考虑以下示例,我使用了一个按钮,但您可以使用所需的参数从回调调用ChangeGoogleMapsLanguage(调整代码以采用lang参数): 异步加载 html,正文,#地图画布{ 身高:100%; 边际:0px; 填充:0px } 函数初始化(){ 变量映射选项={ 缩放:8, 中心:新g

我正在为我的一个项目使用backbone.js,我正在使用GoogleMapAPI版本3。根据一些ajax响应,我想动态更改GoogleMap语言。有什么办法吗?如有任何建议,我们将不胜感激。提前感谢。

考虑以下示例,我使用了一个按钮,但您可以使用所需的参数从回调调用
ChangeGoogleMapsLanguage
(调整代码以采用
lang
参数):


异步加载
html,正文,#地图画布{
身高:100%;
边际:0px;
填充:0px
}
函数初始化(){
变量映射选项={
缩放:8,
中心:新google.maps.LatLng(-34.397150.644)
};
var map=new google.maps.map(document.getElementById('map-canvas'),
地图选项);
}
函数加载脚本(lang){
var script=document.createElement('script');
script.type='text/javascript';
script.src=https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&' +
'回调=初始化';
如果(朗){
script.src+='&language='+lang;
}
script.id=“谷歌地图脚本”;
document.body.appendChild(脚本);
}
window.onload=loadScript;
函数更改GoogleMapsLanguage(){
var lang=document.getElementById('language')。值,
oldScript=document.getElementById(“谷歌地图脚本”);
oldScript.parentNode.removeChild(oldScript);
删除google.maps;
loadScript(lang);
}
换语言
在JSFIDLE中工作:


注意:我使用的是香草JavaScript。该代码在Chrome中可能运行良好,我没有在其他浏览器中测试过。

您想通过“更改谷歌地图语言”说什么?我想进行谷歌地图本地化,我的意思是加载不同语言的谷歌地图,如泰语、中文等。请查看下面的答案。它工作得很好,我测试过了!那么,你克服了这个问题了吗?有同样的问题,并且斯博托罗的动态注入库的决议有帮助,但它没有重新加载地图。由于刷新整个页面不是一个选项,所以在完成上述操作后,我设置了一个超时,在此之后我取消了映射变量,然后再次运行初始化映射变量的代码。您是否找到了另一种方法来执行此操作,而无需再次重新连接google maps脚本?是否会导致此错误“您已多次在此页面上包含谷歌地图JavaScript API。这可能会导致意外错误。“。我有这个问题。有什么建议吗?您必须按照示例中的操作删除旧的脚本标记。
<!DOCTYPE html>
<html>
  <head>
    <title>Asynchronous Loading</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <style>
      html, body, #map-canvas {
        height: 100%;
        margin: 0px;
        padding: 0px
      }
    </style>
    <script>
        function initialize() {
            var mapOptions = {
                zoom: 8,
                center: new google.maps.LatLng(-34.397, 150.644)
            };

            var map = new google.maps.Map(document.getElementById('map-canvas'),
                mapOptions);
        }

        function loadScript(lang) {
            var script = document.createElement('script');
            script.type = 'text/javascript';
            script.src = 'https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&' +
                'callback=initialize';
            if (lang) {
                script.src += '&language=' + lang;
            }

            script.id = "google-maps-script";
            document.body.appendChild(script);
        }

        window.onload = loadScript;

        function ChangeGoogleMapsLanguage() {

            var lang = document.getElementById('language').value,
                oldScript = document.getElementById("google-maps-script");
            oldScript.parentNode.removeChild(oldScript);

            delete google.maps;

            loadScript(lang);
        }

    </script>
  </head>
  <body>
    <input type="text" id="language" value="ja" />
    <button id="localization-button" onclick="ChangeGoogleMapsLanguage()">Change Language</button>
    <div id="map-canvas"></div>
  </body>
</html>