反应原生 GeoLocation 空引用错误

Posted

技术标签:

【中文标题】反应原生 GeoLocation 空引用错误【英文标题】:react native GeoLocation null reference error 【发布时间】:2018-04-12 15:11:43 【问题描述】:

我正在使用下面的代码来尝试获取我的当前位置:

componentDidMount() 
    this.watchID = navigator.geolocation.watchPosition((position) => 
        let region = 
            latitude:       position.coords.latitude,
            longitude:      position.coords.longitude,
            latitudeDelta:  0.00922*1.5,
            longitudeDelta: 0.00421*1.5,
            enableHighAccuracy: true
        
        this.onRegionChange(region, region.latitude, region.longitude);
    );

我得到了:

Attempt to invoke interface method 'boolean abi26_0_0.com.facebook.react.bridge.ReadableMap.hasKey(java.lang.String)' on a null object reference

这行触发了什么:

this.watchID = navigator.geolocation.watchPosition((position) => 

我需要导入一些东西才能让它工作吗?我在网上找不到任何关于此的内容。

【问题讨论】:

您是否使用react-native init 创建了您的项目?如果是这样,你是do all the required configurations吗? 我使用 create-react-native-app 创建了项目。我不确定这如何使该特定行的语法不正确。 不知道你们还需要我什么来获得这方面的帮助。整个课程代码会有帮助吗?还有@Michael Cheng,我以前看过你链接的那个指南,但它列出了iosandroid开发。我都没有使用。 【参考方案1】:

经过几个小时的搜索,我终于找到了它。

如果您像我一样使用 CRNA(create-react-native-app 是您构建应用程序的方式),您需要完成函数调用的所有部分。这些是(成功、错误、选项)。下面的代码是如何完成所有这些部分并消除此错误。

componentDidMount() 
this.watchId = navigator.geolocation.watchPosition(
  (position) => 
    this.setState(
      latitude: position.coords.latitude,
      longitude: position.coords.longitude,
      error: null,
    );
  ,
  (error) => this.setState( error: error.message ),
   enableHighAccuracy: true, timeout: 20000, maximumAge: 1000, distanceFilter: 10 ,
);

【讨论】:

一年多后,这救了我!谢谢!!您应该将此答案标记为已解决。 哈,很高兴能帮上忙;)

以上是关于反应原生 GeoLocation 空引用错误的主要内容,如果未能解决你的问题,请参考以下文章

在反应原生地图中使用 Geolocation.getCurrentPosition 时应用程序崩溃

反应原生 react-native-mauron85-background-geolocation:processReleaseResources FAILED

反应原生 navigator.geolocation.getCurrentPosition 问题

反应原生 - `Geolocation.getCurrentPosition` 返回“没有可用的位置提供程序”

如何在反应原生应用程序中使用 Geolocation 获取设备的当前位置

使用 geolocation react-native 时出错