Доступ к переменной вне функции в собственном геокодере - PullRequest
1 голос
/ 10 июня 2019

Я использую ионный геокодер для получения координат из строки. Страна - это строка для стран. координаты дают необходимую широту и долготу снизу кода. Переменная argumentsData дает фактический результат, содержащий широту и долготу внутри функции. Если я попытаюсь напечатать argumentsData вне функции, она выдаст неопределенное значение.

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

Я хочу получить тот же результат для переменной argumentsData вне функции, что и внутри функции.

1 Ответ

0 голосов
/ 10 июня 2019

Попробуй вот так. 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...