react-native-maps получают текущее местоположение

Я хочу отобразить свое текущее местоположение, но не могу.

Я добавляю код разрешения в AndroidManifest.xml, как показано ниже.

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Однако мой эмулятор не спрашивал меня «Разрешить 00 доступ к вашему местоположению, пока вы используете приложение».

Ниже приведен мой код app.js.

import React, { Component } from 'react';
import { Alert, StyleSheet, Text, View, TouchableOpacity, PermissionsAndroid } from 'react-native';

export default class App extends Component {
    state = {
        location: null
    };

    findCoordinates = () => {
        navigator.geolocation.getCurrentPosition(
            position => {
                const location = JSON.stringify(position);

                this.setState({ location });
            },
            error => Alert.alert(error.message),
            { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
        );
    };

    render() {
        return (
            <View style={styles.container}>
                <TouchableOpacity onPress={this.findCoordinates}>
                    <Text style={styles.welcome}>Find My Coords?</Text>
                    <Text>Location: {this.state.location}</Text>
                </TouchableOpacity>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        backgroundColor: '#F5FCFF'
    },
    welcome: {
        fontSize: 20,
        textAlign: 'center',
        margin: 10
    }
});

person Contractor    schedule 23.12.2019    source источник
comment
Вы используете какую версию React Native ??? где код карты??   -  person Vishal Dhanotiya    schedule 24.12.2019
comment
Это моя реактивная версия. зависимости: { реагировать: 16.9.0, реагировать-родной: 0.61.5, реагировать-родной-Android-местоположение: ^ 1.2.0, реагировать-родной-службы геолокации: ^ 3.1.0, реагировать-родные-карты : 0.26.1   -  person Contractor    schedule 24.12.2019
comment
Гугл карты работают хорошо. Однако карта на эмуляторе не подошла к моему текущему местоположению. Поэтому я меняю свой код на подтверждение моего местоположения.   -  person Contractor    schedule 24.12.2019
comment
Версия React Native navigator.geolocation.getCurrentPosition выше 0.60.0 не работает, используйте npmjs.com /package/@react-native-community/геолокация   -  person Vishal Dhanotiya    schedule 24.12.2019
comment
текущее местоположение не работает напрямую в эмуляторе, вам нужно отправить длинную форму DDMS в Android Studio.   -  person Vishal Dhanotiya    schedule 24.12.2019
comment
Я также пытаюсь использовать библиотеку @react-native-community/geolocation. Однако моя консоль по-прежнему указывает координаты штаб-квартиры Google. Дорогая Дханотия, не могли бы вы объяснить подробнее?   -  person Contractor    schedule 25.12.2019
comment
Пожалуйста, проверьте следующий URL-адрес stackoverflow.com/a/45098850/9158543   -  person Vishal Dhanotiya    schedule 25.12.2019


Ответы (1)


Я решил проблемы, используя приведенный ниже код.

async function requestGeolocationPermission() {
  try {
    const granted = await PermissionsAndroid.request(
      PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
      {
        'title': 'Ridesharer Geolocation Permission',
        'message': 'Ridesharer needs access to your current location so you can share or search for a ride'
      });
    if (granted === PermissionsAndroid.RESULTS.GRANTED) {
      console.log("You can use the geolocation")
    } else {
      console.log("Geolocation permission denied")
    }
  } catch (err) {
    console.warn(err)
  }
}
requestGeolocationPermission();
person Contractor    schedule 09.02.2020