2013-03-13 53 views
0

我正在使用谷歌地圖,我試圖訪問一個函數內的變量,但我不知道如何。在點擊事件中獲取變量Jquery

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); 
    }); 

    } 

我要訪問此

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); 
     } 
    }); 

initalLocation螢火告訴我initalLocation是不確定的。 任何想法?

乾杯

+0

回調爲DirectionsService請求你注意到錯字初始化* I *分配?這不是在你的代碼雖然.. – Tamas 2013-03-13 13:39:43

回答

0

嘗試設置這樣的值:

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

即始終使用前綴window.

請注意,使用window對象來保存全局變量並不是最好的編程習慣。如果你的腳本很小,那可以。

+0

沒有這樣做沒有配對,我仍然得到這個錯誤錯誤:屬性無效的值:undefined [Break On This Error] \t ...?m:Td( this.lat(),a.lat())&&時間Td(this.lng(),a.lng())}; R [H] .equals = R [H] .G; R [H] .lat = Z 。 – 2013-03-13 13:33:20

+0

難道是js編譯/ mimification使代碼無法使用?你有沒有嘗試禁用js編譯? – Tamas 2013-03-13 13:38:03

+0

我不知道那是什麼:) – 2013-03-13 13:49:53

0

geolocation.getCurrentPosition()的回調將被異步調用,因此在執行回調之前您無法訪問該變量。

解決方案:援引的getCurrentPosition()

+0

這是我最初的方法,它的工作。我只是覺得這不是最好的做法。還有另一個原因,我可能需要提出一個新問題來解釋它。 – 2013-03-13 13:49:12