0

我正在使用谷歌地图,我正在尝试访问函数内的变量,但我不知道如何。

 if(navigator.geolocation) {

    browserSupportFlag = true;
    navigator.geolocation.getCurrentPosition(function(position) {
     initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
     // map.setCenter(initialLocation);
       markerL = new google.maps.Marker({
                        position: initialLocation,
                       map: map,
                        title: "You are Here",
                    });

                     markerL.setMap(map);
    }, function() {
      handleNoGeolocation(browserSupportFlag);
    });

  } 

我想在这里访问 initalLocation

var directionsService = new google.maps.DirectionsService();
     var directionsDisplay = new google.maps.DirectionsRenderer();
  directionsDisplay.setMap(map);
     directionsDisplay.setPanel(document.getElementById('panel'));

     var request = {
       origin: window.initialLocation, 
       destination: 'london',
       travelMode: google.maps.DirectionsTravelMode.DRIVING
     };

     directionsService.route(request, function(response, status) {
       if (status == google.maps.DirectionsStatus.OK) {
         directionsDisplay.setDirections(response);
       }
     });

Firebug 告诉我 initalLocation 未定义。有任何想法吗?

干杯

4

2 回答 2

0

的回调geolocation.getCurrentPosition()将被异步调用,因此在回调执行之前您无法访问该变量。

解决方法:在回调中调用directionsService-requestgetCurrentPosition()

于 2013-03-13T13:42:52.000 回答
0

尝试像这样设置值:

window.initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);

即总是使用window.前缀。

请注意,使用窗口对象来保存全局变量并不是最佳编程实践。如果您的脚本很小,那也没关系。

于 2013-03-13T13:06:02.837 回答