geolib 在 react-native 状态下尚未准备好地理位置坐标

Posted

技术标签:

【中文标题】geolib 在 react-native 状态下尚未准备好地理位置坐标【英文标题】:Geolocation coordinates are not ready by geolib in a react-native state 【发布时间】:2017-10-09 01:19:06 【问题描述】:

我在 react-native 上使用 geolib 并将其与地理位置集成。我想获取从我当前位置的纬度/经度到另一个位置的纬度/经度的距离。当我这样做时,它会弹出错误:null is not an object (evalating 'point.hasOwnProperty'。关于修复的任何想法?

componentDidMount() 
navigator.geolocation.getCurrentPosition(
  (position) => 
    this.setState(
      latitude: position.coords.latitude,
      longitude: position.coords.longitude,
      error: null,
    );
  
);


render() 

const lat = this.state.latitude;
const long = this.state.longitude;

let c = geolib.getDistance(
latitude: lat, longitude: long, //error occurs HERE
latitude: 36.204824, longitude: 138.252924
);

return (
    <Text>Distance: c kms</Text>
);

【问题讨论】:

你解决这个丹妮丝了吗? 你的代码对我有用,谢谢 【参考方案1】:

这可能是因为以下是异步的,这意味着它会在其他所有内容都已加载后给出结果:

navigator.geolocation.getCurrentPosition(
  (position) => 
    this.setState(
      latitude: position.coords.latitude,
      longitude: position.coords.longitude,
      error: null,
    );
  
);

第一次渲染时,this.state.latitude 将为空:

const lat = this.state.latitude;
const long = this.state.longitude;

尝试在 render() 方法的开头添加这个:

if (this.state.latitude == null) return null;

这将阻止第一次渲染。第二次渲染时,this.state.latitude 将准备就绪。

【讨论】:

以上是关于geolib 在 react-native 状态下尚未准备好地理位置坐标的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:无法读取 Geolib.isDecimal 未定义的属性“toString”

csharp WCF示例:GeoLib

react-native 状态中的奇怪问题

React-native android 工具栏位于状态栏下方

react-native 中的小问题活动指标 |组件 |组件内的道具 |道具 |设置状态

无法使用react-native app中的redux-persist检查索引/主文件上是否已加载持久状态