Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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_Maps - Fatal编程技术网

Javascript 希望从其他函数访问映射对象

Javascript 希望从其他函数访问映射对象,javascript,google-maps,google-maps-api-3,maps,Javascript,Google Maps,Google Maps Api 3,Maps,我已经用信息框初始化了一个映射,现在当我尝试从另一个函数访问map变量时,单击link Get location I Get map时捕获我的位置的函数没有定义,我知道它在变量可用之前就被执行了,但我还没有找到解决方法。 在此方面的任何指示/帮助都将不胜感激,提前感谢您 jQuery文档.readyfunction${ var script=document.createElement'script'; script.src=http://maps.googleapis.com/maps/ap

我已经用信息框初始化了一个映射,现在当我尝试从另一个函数访问map变量时,单击link Get location I Get map时捕获我的位置的函数没有定义,我知道它在变量可用之前就被执行了,但我还没有找到解决方法。 在此方面的任何指示/帮助都将不胜感激,提前感谢您

jQuery文档.readyfunction${ var script=document.createElement'script'; script.src=http://maps.googleapis.com/maps/api/js?sensor=false; //document.body.appendChildscript; var映射; 初始化; }; 功能显示位置{ //试试HTML5地理定位 ifnavigator.geolocation{ navigator.geolocation.getCurrentPositionfunctionposition{ var映射; var bounds=new google.maps.LatLngBounds; var pos=new google.maps.LatLngposition.coords.latitude,position.coords.longitude; //jQuery'findMe'。数据'pos',pos; marker=新的google.maps.marker{ 地图:地图, 职位:pos,, 缩放:7 }; //infowindow=新建google.maps.infowindow{ //地图:地图, //职位:pos,, //内容:“你在这里” // }; map.setCenterpos; },功能{ Handlenogeologationrue; }; }否则{ //浏览器不支持地理位置 HandlenogeogrationFalse; } 返回false; } 函数初始化{ var映射; var bounds=new google.maps.LatLngBounds; 变量映射选项={ mapTypeId:“路线图”, 缩放:8 }; map=new google.maps.Mapdocument.getElementByIdmap_画布,mapOptions; map.set45; var markers=[35.2152241,-80.848019000000002,], [,35.1995636,-80.82525329999999,], [,35.1585635,-80.79616499999997,], [,35.201245,-80.86516999999998,], [,35.19604558956503,-80.84856033325195,], [,35.197692,-80.82809299999997,], [,35.0658382,-80.76834389999999,], [,35.1786109,-80.851946,' '], [,35.1304041,-80.8324773,], [,35.201245,-80.86516999999998,' '], [,35.2136068,-80.79125290000002,' '], ]; var infoWindowContent=[['test content'], [“测试内容”], [“测试内容”], [“测试内容”], [“测试内容”], [“测试内容”], [“测试内容”], [“测试内容”], [“测试内容”], [“测试内容”], ]; var infoWindow=new google.maps.infoWindow,marker,i; 对于i=0;i<0.length;i++{ var position=new google.maps.LatLngmarkers[i][1],markers[i][2]; var-itype=标记[i][3]; bounds.extendposition; marker=新的google.maps.marker{ 职位:职位,, 地图:地图, 标题:标记[i][0] }; google.maps.event.addListenermarker,“单击”,functionmarker,i{ 返回函数{ setContentinfoWindowContent[i][0]; infoWindow.openmap,标记; } }马克,我; map.fitbundsbounds; } } 地图画布{ 宽度:100%;高度:400px }
您需要有一个全局变量来存储“映射”。在这里,您还在每个函数中声明了变量映射。这将对全局变量进行阴影处理,并且始终使用局部变量,从而导致未定义。在下面的代码中,我添加了一个全局映射变量,并在函数showPosition和initialize中对映射变量的重新声明进行了注释

删除initialize中的var映射,问题是您要声明它两次:全局声明和在initialize函数的范围内声明。如果希望在全局范围内访问它,请不要再次声明它。希望有帮助。
var map;    // global map variable

jQuery( document ).ready(function($) {
        var script = document.createElement('script');
        script.src = "http://maps.googleapis.com/maps/api/js?sensor=false";
        // document.body.appendChild(script);
        var map;
        initialize();

        });   
          function showPosition(){
              // Try HTML5 geolocation
              if(navigator.geolocation) {
                navigator.geolocation.getCurrentPosition(function(position) {
                //var map;
                var bounds = new google.maps.LatLngBounds();

                var pos = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
                //jQuery('#findMe').data('pos',pos);

                    marker = new google.maps.Marker({   
                        map: map,
                        position: pos,
                        zoom:7

                    });
                    // infowindow = new google.maps.InfoWindow({
                        // map: map,
                        // position: pos,
                        // content: 'You Are Here'
                     // });
                     map.setCenter(pos);

                }, function() {
                  handleNoGeolocation(true);
                });
              } else {
                // Browser doesn't support Geolocation
                handleNoGeolocation(false);
              }
              return false;
        }
       function initialize() {
        //var map;
        var bounds = new google.maps.LatLngBounds();
        var mapOptions = {
            mapTypeId: 'roadmap',
            zoom: 8
        };


        map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
        map.setTilt(45);

        var markers = [['',35.2152241,-80.84801900000002,''],
    ['',35.1995636,-80.82525329999999,''],
    ['',35.1585635,-80.79616499999997,''],
    ['',35.201245,-80.86516999999998,''],
    ['',35.19604558956503,-80.84856033325195,''],
    ['',35.197692,-80.82809299999997,''],
    ['',35.0658382,-80.76834389999999,''],
    ['',35.1786109,-80.851946,' '],
    ['',35.1304041,-80.8324773,''],
    ['',35.201245,-80.86516999999998,'  '],
    ['',35.2136068,-80.79125290000002,' '],
    ];

    var infoWindowContent = [['<div class="info_content">test content<\/div>'],
    ['<div class="info_content">test content<\/div>'],
    ['<div class="info_content">test content<\/div>'],
    ['<div class="info_content">test content<\/div>'],
    ['<div class="info_content">test content<\/div>'],
    ['<div class="info_content">test content<\/div>'],
    ['<div class="info_content">test content<\/div>'],
    ['<div class="info_content">test content<\/div>'],
    ['<div class="info_content">test content<\/div>'],
    ['<div class="info_content">test content<\/div>'],
    ];
        var infoWindow = new google.maps.InfoWindow(), marker, i;

        for( i = 0; i < markers.length; i++ ) {
            var position = new google.maps.LatLng(markers[i][1], markers[i][2]);
            var itype = markers[i][3];
            bounds.extend(position);
            marker = new google.maps.Marker({
                position: position,
                map: map,
                title: markers[i][0]
            });

            google.maps.event.addListener(marker, 'click', (function(marker, i) {
                return function() {
                    infoWindow.setContent(infoWindowContent[i][0]);
                    infoWindow.open(map, marker);
                }
            })(marker, i));

            map.fitBounds(bounds);
        }
        }