如何避免“在没有注册侦听器的情况下发送'geolocationDidChange'”警告?

Wat*_*wer 6 android google-maps ios react-native

我将在本机反应中获取当前位置。

我使用了下面的代码:

    if(Platform.OS == "android") {
        try {
            const granted = await PermissionsAndroid.request(
                PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
                {
                    'title': 'Location Permission',
                    'message': 'Wichz would like to access your location to get your things.'
                }
            )
            if (granted === PermissionsAndroid.RESULTS.GRANTED) {
                // console.warn("You can use locations ")
            } else {
                // console.warn("Location permission denied")
            }
        } catch (err) {
            // console.warn(err)
        }
    }
    this.watchID = navigator.geolocation.watchPosition((position) => {
        this.setState({
            selectedLat: position.coords.latitude,
            selectedLng: position.coords.longitude
        });
        Global.selectedLat = position.coords.latitude;
        Global.selectedLng = position.coords.longitude;
        this.getcurrent_address(position.coords.latitude, position.coords.longitude);
    }, (error)=>console.log(error.message),
    {enableHighAccuracy: false, timeout: 3, maximumAge: 1, distanceFilter: 1}
    );
Run Code Online (Sandbox Code Playgroud)

并在ios项目中添加如下位置使用说明: 位置描述截图

它在 ios 和 android 上都运行良好,但我收到如下警告框:

警告框

如何避免出现此警告框?谢谢

Mat*_*hen 3

现在可能为时已晚,但我将向将来遇到同样问题的人详细介绍我的警告经历。

我自己以前也遇到过这个错误。对我来说,此警告的原因基本上是在地理定位 watchPosition 调用完全完成之前重新渲染组件。

就我而言,这是因为我有多个提取调用,导致组件快速连续地重新渲染。我通过仅在组件的最终渲染时调用地理定位 watchPosition 来修复此问题。