Почему я не могу получить доступ к значениям в моем объекте после navigator.geolocation.getCurrentPosition (), присваивая ему значения и возвращает его? - PullRequest
0 голосов
/ 02 ноября 2019

Когда я присваиваю значения своему объекту pos в функции whereAmI, используя navigator.geolocation.getCurrentPosition (), я вижу, что lat и lng находятся внутри объекта, однако, когда я пытаюсь использовать эти свойства, они возвращают undefined. Большое спасибо за любую помощь!

import React, {useEffect, useState }  from 'react';

import { GoogleMap } from "react-google-maps"


import './Map.css';

function Map({mapsData}) {

  const myLocation = whereAmI();

  console.log(myLocation); // this returns object with values

  return (
      <GoogleMap 
      defaultZoom={12} 
      defaultCenter={{myLocation}}
      >
      { /* We will render our data here */ }
      </GoogleMap>
  )
}

export default Map;


// helper function to get my current location 
function whereAmI() {
  let pos = {};
  navigator.geolocation.getCurrentPosition((position)=> {
    pos.lat = position.coords.latitude;
    pos.lng = position.coords.longitude;
  })
  console.log(pos); // this returns an object as well with properties but pos.lat or pos.lng returns undefined
  return pos;
}

1 Ответ

1 голос
/ 02 ноября 2019

navigator.geolocation.getCurrentLocation() - асинхронная функция, поэтому ваш оператор console.log и ваш оператор return выполняются до того, как будут определены pos.lat и pos.lng. Вот почему getCurrentLocation принимает функцию обратного вызова, которая выполняется после успешного возврата местоположения.

...