javascript - 在本地地理编码器中访问函数外部变量
问题描述
我正在使用离子原生地理编码器从字符串提供的坐标中获取坐标。Country 是为国家/地区提供的字符串。坐标从下面的代码中给出所需的纬度和经度。变量坐标数据在函数内部给出包含纬度和经度的实际结果。如果我尝试在函数之外打印坐标数据,它会给出未定义的。
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
我希望从函数外部的变量坐标数据获得相同的结果,因为我正在进入函数内部。
解决方案
像这样试试。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
}
推荐阅读
- javascript - 如何只为部分用户(30%)使用应用程序?
- json - 根据密钥解组 JSON
- java - Flink 1.7.1 fails to authenticate s3a with core-site.xml
- neo4j - apoc.path.expandConfig() extract (subject)-[object]->(predicate) 三元组
- bash - Finding ffmpeg installed version
- linux - Running a command on Linux/Docker Cluster
- android - How to use proguard in Appcelerator?
- powerapps - PowerApp 未将值正确映射到 Azure DevOps 集成
- php - 我怎样才能让strtotime进入一天的开始
- java - Java 中的包装类和泛型说明