我的home.ts文件夹中有一个名为displayMap()
的文件夹。我想在其他函数上使用pos变量。
我试着把它变成一个全局变量,但是有一些错误,在我的路上不能这样做。
我定义了一个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 :(得分:0)
此处的情况是您未使用Arrow Functions,因此在navigator.geolocation.getCurrentPosition()
内,它将被限制为该功能的范围,并且它无法访问全局范围。
尝试更改该代码的代码:
navigator.geolocation.getCurrentPosition(position => {
// YOUR CODE...
this.globalPos = pos;
});
希望这有帮助。