我是靠谱客的博主 失眠钥匙,最近开发中收集的这篇文章主要介绍ReactNative 获取地理位置信息,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

ReactNative 提供了一个定位API: Geolocation 用来获取设备所在的地理位置.

定位API遵循web标准。

iOS
你需要在Info.plist中增加NSLocationWhenInUseUsageDescription字段来启用定位功能。如果你使用react-native init创建项目,定位会被默认启用。

Android
要请求访问地理位置的权限,你需要在AndroidManifest.xml文件中加入如下一行:
< uses-permission android:name=”android.permission.ACCESS_FINE_LOCATION” />

方法

getCurrentPosition(geo_success: Function, geo_error?: Function, geo_options?: GeoOptions)

成功时会调用geo_success回调,参数中包含最新的位置信息。支持的选项:timeout (ms), maximumAge (ms), enableHighAccuracy (bool)

watchPosition(success: Function, error?: Function, options?: GeoOptions)

持续监听位置,每当位置变化之后都调用success回调。支持的选项:timeout (ms), maximumAge (ms), enableHighAccuracy (bool), useSignificantChanges (bool)

static clearWatch(watchID: number)

static stopObserving()

下面看一下使用方法:

    componentDidMount() {
        navigator.geolocation.getCurrentPosition(
            (coords) => {
                this.setState(coords);
                console.log(coords)
            },
            (error) => console.error(error)
        );
        this.watchID = navigator.geolocation.watchPosition((lastPosition) => {
            this.setState({lastPosition});
        });
    }

上面的log打印出来的是:
这里写图片描述

可见: 返回一个对象包含两个属性:
一个是coords,里面含有地理信息,
一个是timestamp对象,我不知道是干什么的..

<Text>纬度:{this.state.coords?this.state.coords.latitude:'获取中'}</Text>
<Text>经度:{this.state.coords?this.state.coords.longitude:'获取中'}</Text>

如此便能获取到经纬度信息了.

 this.watchID = navigator.geolocation.watchPosition((lastPosition) => {
            this.setState({lastPosition});
        });

这段代码是持续监听位置,每当位置变化之后都调用success回调.
如上面代码所示:每当位置变换时,我们回调方法里写的是改变state里的lastPosition .

如果有需要的话,也可以用到.
但是要记得退出的时候使用 clearWatch 方法清除哦

最后

以上就是失眠钥匙为你收集整理的ReactNative 获取地理位置信息的全部内容,希望文章能够帮你解决ReactNative 获取地理位置信息所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部