在第一次运行时获取当前位置

Posted

技术标签:

【中文标题】在第一次运行时获取当前位置【英文标题】:get current location in first run 【发布时间】:2018-10-22 07:10:30 【问题描述】:

我有一个使用位置服务的应用,但是当我请求当前位置并且在用户允许后,应用找不到位置。 为了让用户找到它的位置,必须关闭并重新打开应用程序,直到找到正确的位置。 这是我的代码:

componentWillMount() 
    this.getCurrentLocation();

getCurrentLocation = () => 
    const locationConfig = 
        timeout: 20000,
        maximumAge: 1000,
        enableHighAccuracy: false
    ;
    navigator.geolocation.getCurrentPosition(
        this.iGetLocation,
        (error) => 
            console.log(error);
        ,
        locationConfig
    );
;

【问题讨论】:

【参考方案1】:

我认为问题在于您的职位回调:this.iGetPosition。尝试使用回调函数,如下所示。 这对我有用(检查getCurrentPosition 函数):

 componentDidMount() 
        this.requestAccess();
 
 requestAccess = async () => 
    try 
      const granted = await Permissionsandroid.request(
        PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
        
          'title': 'Location permission',
          'message': 'App needs access to your location ' +
                     'so we can show your location.'
        
      )
      if (granted === PermissionsAndroid.RESULTS.GRANTED) 
        navigator.geolocation.getCurrentPosition(
          (position) => 
            this.setState(
              latitude: position.coords.latitude,
              longitude: position.coords.longitude,
              error: null,
            );
          ,
          (error) => this.setState( error: error.message ),
           enableHighAccuracy: false, timeout: 20000, maximumAge: 1000 ,
        );

       else 
        console.log("Location permission denied")
      
     catch (err) 
      console.warn(err)
    
  

【讨论】:

以上是关于在第一次运行时获取当前位置的主要内容,如果未能解决你的问题,请参考以下文章

打开应用程序时获取当前位置

Xamarin Forms - 每 10 秒获取一次设备位置(当应用程序在前台/后台运行时)

使用用户位置时出错

Android - 只获取一次位置

快速获取 ImageView 的当前位置

在 Titanium Android 中关闭移动数据时,一次拍摄 getCurrentLocation 无法获取新位置