es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Mapa centrado en la ubicación actual con un marcador? React Native Expo

Tengo un mapView, y quiero centrar mi mapa en la ubicación actual del usuario cuando se abre la pantalla del mapa. Siguiendo la documentación de expo, se debería lograr con la API de ubicación de Expo. Sin embargo, la documentación no es clara. Tomé parte del código de la documentación de ubicación de Expo. Entonces, ¿cómo debo integrarlo en MapView para ejecutar el método getCurrentPositionAsync y centrar el mapa adecuadamente? Gracias por la ayuda.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para integrar la API de ubicación de Expo y centrar el mapa en la ubicación actual del usuario, puede agregar el siguiente fragmento de código dentro del componente Map:

    <map showsuserlocation="{true}" region="{{" latitude:="" location="" location.coords.latitude="" :="" 37.78825,="" longitude:="" location="" location.coords.longitude="" :="" -122.4324,="" latitudedelta:="" 0.0922,="" longitudedelta:="" 0.0421,="" }}="">
    

    Este código establece la propiedad showsUserLocation en true para mostrar la ubicación actual del usuario y la propiedad region para especificar la región inicial que se muestra en el mapa. La latitud y longitud se establecen en función de la ubicación actual del usuario devuelta por el método getCurrentPositionAsync. Si la ubicación no está disponible o hay un error, se utilizan las coordenadas predeterminadas (37.78825, -122.4324) para San Francisco. Las propiedades latitudeDelta y longitudeDelta determinan el nivel de zoom del mapa.

    Por lo tanto, el código final debería verse así:

    “`
    export const MapScreen = ({navigation}) => {

    const [location, setLocation] = useState(null);
    const [errorMsg, setErrorMsg] = useState(null);

    useEffect(() => {
    (async () => {
    let { status } = await Location.requestForegroundPermissionsAsync();
    if (status !== ‘granted’) {
    setErrorMsg(‘Permission to access location was denied’);
    return;
    }

      let location = await Location.getCurrentPositionAsync({});
      setLocation(location);
    })();
    

    }, []);

    return (
    <>


    );
    };
    “`

Comments are closed.