Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 本地地理编码器中函数外部的访问变量_Javascript_Angular_Typescript_Ionic Framework - Fatal编程技术网

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

Javascript 本地地理编码器中函数外部的访问变量,javascript,angular,typescript,ionic-framework,Javascript,Angular,Typescript,Ionic Framework,我正在使用ionic native geocoder从字符串中获取坐标。国家是为国家提供的字符串。 坐标给出了代码下方所需的纬度和经度。 变量CoordinationData给出函数中包含纬度和经度的实际结果。 如果我尝试打印Coordinates Data外部函数,它会给出未定义的 this.nativeGeocoder.forwardGeocode(Country).then((coordinates: NativeGeocoderForwardResult[])=> { let co

我正在使用ionic native geocoder从字符串中获取坐标。国家是为国家提供的字符串。 坐标给出了代码下方所需的纬度和经度。 变量CoordinationData给出函数中包含纬度和经度的实际结果。 如果我尝试打印Coordinates Data外部函数,它会给出未定义的

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
}

像这样试试<代码>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
}

您好,我尝试了您的解决方案,但在控制台中它只显示空白。现在我得到输出:[object Promise]您现在可以尝试吗您好,我尝试了您的解决方案,但在控制台中它只显示空白。现在我得到输出:[object Promise]您现在可以尝试吗