繁体   English   中英

在本地地址解析器中访问外部函数

[英]Access variable outside function in native geocoder

我正在使用离子本机Geocoder从字符串提供的获取坐标。 国家是为国家/地区提供的字符串。 坐标从下面的代码给出所需的纬度和经度。 变量坐标数据给出函数内部包含纬度和经度的实际结果。 如果我尝试在函数外部打印坐标数据,它将给出未定义的信息。

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
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM