为了账号安全,请及时绑定邮箱和手机立即绑定

在本机地理编码器中访问函数外部的变量

在本机地理编码器中访问函数外部的变量

一只斗牛犬 2021-06-15 13:51:28
我正在使用 ionic native geocoder 从字符串中获取坐标。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当我进入函数内部时,我希望从函数外部的变量坐标数据获得相同的结果。
查看完整描述

1 回答

?
SMILET

TA贡献1796条经验 获得超4个赞

像这样尝试。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

}


查看完整回答
反对 回复 2021-06-24
  • 1 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信