Как вы с геолокации реагируете? - PullRequest
0 голосов
/ 20 сентября 2019

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

Я создал помощника.js файл с функцией ниже, чтобы получить координаты из API геолокации.Как вы можете видеть - функция navigator.geolocation.getCurrentPosition является асинхронной, поэтому я ничего не получу в первый раз - как я могу использовать функцию getUserLocation, чтобы получить координаты для действия?

getUserLocation: function () {

    let outLatLonObj = {
        lat: '',
        lon: '',
        status: ''
    }

    function success(position) {

        outLatLonObj.lat = position.coords.latitude;
        outLatLonObj.lon = position.coords.longitude;
        return outLatLonObj
    }

    function error() {
        outLatLonObj.status = 'Unable to retrieve your location';
    }

    if (!navigator.geolocation) {
        outLatLonObj.status = 'Geolocation is not supported by your browser';
    } else {
        outLatLonObj.status = 'Locating…';
        navigator.geolocation.getCurrentPosition(success, error);
    }
    return outLatLonObj; // not returns anything at first
},

Здесьэто действие, которое должно отправить координаты пользовательскому интерфейсу

export const checkIfUserHasCoordinates = () => {

    return {
        type: "CHECK_FOR_CORDINATES",
        payload: helpers.getUserLocation() //coordinates
    };
}
...