2017-09-12 62 views
0

我在我的home.ts文件夾中有一個名稱爲displayMap()的功能。我想在其他函數上使用pos變量。如何用Ionic 3定義一個全局變量?

我嘗試使這個全局變量,但有一些錯誤,不能這樣做在我的路上。

我像下面的代碼一樣定義了一個globalPos變量。

export class HomePage { 

    globalPos: any; 

並嘗試使用以下代碼將pos值保存到globalPos。

displayMap(){ 
     let pos = { 
      lat: position.coords.latitude, 
      lng: position.coords.longitude 
     }; 
     let info = new google.maps.InfoWindow; 

     that.globalPos = pos; 
} 

displayMap()函數。

displayMap() { 

    let that = this; 


    let latLng = new google.maps.LatLng(40.106334, 29.510615); 

    let mapOptions = { 
     center: latLng, 
     disableDefaultUI: true, 
     zoom: 15, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
    }; 

    this.map = new google.maps.Map(this.mapElement.nativeElement, mapOptions); 

    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(function (position) { 
     let pos = { 
      lat: position.coords.latitude, 
      lng: position.coords.longitude 
     }; 
     let info = new google.maps.InfoWindow; 

     that.globalPos = pos; 

     info.setContent('you are here!'); 
     info.setPosition(pos); 
     info.open(that.map); 

     that.map.setCenter(pos); 
     }) 
    } 
    } 
+0

你在哪裏以及如何調用displayMap()方法? –

回答

0

這裏的情況是,你不使用Arrow Functions所以裏面navigator.geolocation.getCurrentPosition()這將是塊作用範圍包括該功能,它會無法訪問全局範圍。

嘗試改變代碼爲那一個:

navigator.geolocation.getCurrentPosition(position => { 
    // YOUR CODE... 
    this.globalPos = pos; 
}); 

希望這有助於。