我正在使用离子本机Geocoder从字符串提供中获取坐标。国家是为国家/地区提供的字符串。 坐标从下面的代码给出所需的纬度和经度。 变量坐标数据给出函数内部包含纬度和经度的实际结果。 如果我尝试在函数外部打印 coordinatesData ,则会显示未定义的内容。
this.nativeGeocoder.forwardGeocode(Country).then((coordinates: NativeGeocoderForwardResult[])=> {
let coordinatesData=JSON.stringify(coordinates, null, 2)
this.map.animateCamera( {
target: {
lat: coordinates[0].latitude,
lng: coordinates[0].longitude
}
, zoom: 4, duration: 500
}
);
let marker: Marker=this.map.addMarkerSync( {
position: {
lat: parseFloat(coordinates[0].latitude),
lng: parseFloat(coordinates[0].longitude)
}
, animation: GoogleMapsAnimation.DROP
}
);
}
) .catch((error: any)=> (error));
console.log(coordinatesData) // undefined
我希望从函数外部获得与我进入函数内部相同的结果。
答案 0 :(得分:0)
尝试这样。 let
值在函数外部将不可用,因此请使用var
var coordinatesData= ""; //define the variable outside your call.
this.nativeGeocoder.forwardGeocode(Country).then((coordinates: NativeGeocoderForwardResult[])=> {
coordinatesData=JSON.stringify(coordinates, null, 2);
this.map.animateCamera( {
target: {
lat: coordinates[0].latitude,
lng: coordinates[0].longitude
}
, zoom: 4, duration: 500
}
);
let marker: Marker=this.map.addMarkerSync( {
position: {
lat: parseFloat(coordinates[0].latitude),
lng: parseFloat(coordinates[0].longitude)
}
, animation: GoogleMapsAnimation.DROP
}
);
}
) .catch((error: any)=> (error));
console.log(coordinatesData) // undefined
更新的答案:
var coordinatesData = this.nativeGeocoder.forwardGeocode(Country).then((coordinates: NativeGeocoderForwardResult[])=> {
this.map.animateCamera( {
target: {
lat: coordinates[0].latitude,
lng: coordinates[0].longitude
}
, zoom: 4, duration: 500
}
);
let marker: Marker=this.map.addMarkerSync( {
position: {
lat: parseFloat(coordinates[0].latitude),
lng: parseFloat(coordinates[0].longitude)
}
, animation: GoogleMapsAnimation.DROP
}
);
logData(JSON.stringify(coordinates, null, 2));
}
) .catch((error: any)=> (error));
function logData(coordinatesData){
console.log(coordinatesData) // undefined
}