我正在尝试将我的提供程序中找到的函数的结果导入我的应用程序中的另一个页面。在这种情况下,结果是" cityname"。当控制台注销响应时,我得到一个未定义的内容。
位置提供商ts
getLocation(cityname) {
this.options = {
enableHighAccuracy: false
};
return this.geolocation.getCurrentPosition(this.options).then((pos: Geoposition) => {
var geocoder = new google.maps.Geocoder;
var latlng = new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude);
geocoder.geocode({'location': latlng}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
if (results[1]) {
var cityname = results[1].formatted_address;
return cityname;
} else {
console.log('No results found');
}
} else {
console.log('Geocoder failed due to: ' + status);
}
});
}, (err: PositionError) => {
console.log("error : " + err.message);
})
}
另一页
import { LocationProvider } from './../../../../providers/location/location';
constructor(public navCtrl: NavController, public navParams: NavParams, public storage: Storage, private location: LocationProvider) {}
ionViewWillEnter() {
this.location.getLocation().then((data) =>{
console.log(data);
});
}
任何想法我做错了什么。目的是让城市名称在我的pp的其他部分重复使用
答案 0 :(得分:1)
你的代码目前没有意义:
cityname
实施getLocation
getLocation()
(位于another page
)和getLocation(cityname)
(位于location provider
)我建议您通过清理一下来解决问题:
位置提供商
getLocation() { // remove cityname from the signature, it is not used anyway
this.options = {
enableHighAccuracy: false
};
return this.geolocation.getCurrentPosition(this.options).then((pos: Geoposition) => {
var geocoder = new google.maps.Geocoder;
var latlng = new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude);
return new Promise(function(resolve, reject) {
geocoder.geocode({'location': latlng}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
if (results[1]) {
var cityname = results[1].formatted_address;
resolve(cityname)
} else {
reject('No results found');
}
} else {
reject('Geocoder failed due to: ' + status);
}
});
})
}
答案 1 :(得分:0)
您的代码中可能还有其他问题,但我注意到的第一件事是another page
在没有参数的情况下调用getLocation()
,而函数被定义为将cityname
作为参数。