Google maps 如何将map定义为全局变量以调用另一个javascript函数

Google maps 如何将map定义为全局变量以调用另一个javascript函数,google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,所以我在这个解决方案上搜索了几个小时请帮忙,这是我的代码 <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> <meta charset="utf-8"> <title>Simple markers</title> <sty

所以我在这个解决方案上搜索了几个小时请帮忙,这是我的代码

    <html>
      <head>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
        <meta charset="utf-8">
        <title>Simple markers</title>
        <style>
          html, body, #map-canvas {
            height: 100%;
            margin: 0px;
            padding: 0px
          }
        </style>
        <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=false"></script>
        <script type="text/javascript">
            var map;
            var marker;

            function initialize() {
                var myLatlng = new google.maps.LatLng(-25.363882,131.044922);

                var mapOptions = {
                    zoom: 10,
                    disableDefaultUI: true,
                    center: myLatlng
                }

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

                marker = new google.maps.Marker({
                  position: myLatlng,
                  map: map,
                  title: 'Hello World!'
                });
            }
            function see(){
                alert(map);
                var newLatlng = new google.maps.LatLng(-25.363882,133.044922);
                map.setCenter(newLatlng);
            }
    google.maps.event.addDomListener(window, 'load', initialize);
see();
      </script>
      </head>
      <body>
        <div id="map-canvas"></div>
      </body>
    </html>

简单标记
html,正文,#地图画布{
身高:100%;
边际:0px;
填充:0px
}
var映射;
var标记;
函数初始化(){
var mylatng=new google.maps.LatLng(-25.363882131.044922);
变量映射选项={
缩放:10,
disableDefaultUI:true,
中心:myLatlng
}
map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
marker=新的google.maps.marker({
职位:myLatlng,
地图:地图,
标题:“你好,世界!”
});
}
函数请参见(){
警报(地图);
var newLatlng=newgoogle.maps.LatLng(-25.363882133.044922);
地图设置中心(newLatlng);
}
google.maps.event.addDomListener(窗口“加载”,初始化);
见();
变量
map
称为未定义。在搜索之后,他们说在分配map()之前调用map。如何修复这个已知的问题?请帮忙


我的目标是使用javascript函数更新标记位置。任何帮助都会很好,谢谢你(:

就像另一篇文章所说的,地图在被引用时还没有被分配。这是因为你的初始化函数只会在页面加载完成时被调用。在该函数中会发生以下情况

map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
在此之前,map是未定义的,即使您对其进行了变量化。因此,您可以在点击另一篇文章推荐的按钮时调用函数,也可以在初始化函数末尾调用see()。两者都可以工作。这里,我将see()放在初始化函数末尾

<html>
      <head>
        <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
        <meta charset="utf-8">
        <title>Simple markers</title>
        <style>
          html, body, #map-canvas {
            height: 100%;
            margin: 0px;
            padding: 0px
          }
        </style>
        <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=false"></script>
        <script type="text/javascript">
            var map;
            var marker;

            function initialize() {
                var myLatlng = new google.maps.LatLng(-25.363882,131.044922);

                var mapOptions = {
                    zoom: 10,
                    disableDefaultUI: true,
                    center: myLatlng
                }

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

                marker = new google.maps.Marker({
                  position: myLatlng,
                  map: map,
                  title: 'Hello World!'
                });
                see();
            }
            function see(){
                alert(map);
                var newLatlng = new google.maps.LatLng(-25.363882,133.044922);
                map.setCenter(newLatlng);
            }
    google.maps.event.addDomListener(window, 'load', initialize);
      </script>
      </head>
      <body>
        <div id="map-canvas"></div>
      </body>
    </html>

简单标记
html,正文,#地图画布{
身高:100%;
边际:0px;
填充:0px
}
var映射;
var标记;
函数初始化(){
var mylatng=new google.maps.LatLng(-25.363882131.044922);
变量映射选项={
缩放:10,
disableDefaultUI:true,
中心:myLatlng
}
map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
marker=新的google.maps.marker({
职位:myLatlng,
地图:地图,
标题:“你好,世界!”
});
见();
}
函数请参见(){
警报(地图);
var newLatlng=newgoogle.maps.LatLng(-25.363882133.044922);
地图设置中心(newLatlng);
}
google.maps.event.addDomListener(窗口“加载”,初始化);

很奇怪,我上一次尝试了它(在单击按钮时调用see),它给了我一个错误,但现在不是。很抱歉,我不耐烦地问这个问题。