React -Native“经度值不能从字符串转换为双精度”

时间:2019-03-13 09:44:14

标签: reactjs react-native react-native-maps

我正在使用react-native-maps,使用这段代码会很久很久:

callLocation(that) {
  navigator.geolocation.getCurrentPosition(
    position => {
      const currentLongitude = JSON.stringify(position.coords.longitude);
      const currentLatitude = JSON.stringify(position.coords.latitude);
      that.setState({ currentLongitude: currentLongitude });
      that.setState({ currentLatitude: currentLatitude });
    },
    error => alert(error.message),
    { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
  );
  that.watchID = navigator.geolocation.watchPosition(position => {
    console.log(position);
    const currentLongitude = JSON.stringify(position.coords.longitude);
    const currentLatitude = JSON.stringify(position.coords.latitude);
    that.setState({ currentLongitude: currentLongitude });
    that.setState({ currentLatitude: currentLatitude });
  });
}

这是我的地图视图代码:

<MapView
  style={styles.map}
  initialRegion={{
    latitude: this.state.currentLatitude,
    longitude: this.state.currentLongitude,
    latitudeDelta: 0.0922,
    longitudeDelta: 0.0421
  }}
/>

在我的代码中粘贴此经纬度较长的代码时,出现以下错误:

4 个答案:

答案 0 :(得分:2)

您的问题是,您要将坐标设为字符串,并且必须为双精度。

您不应该使用JSON.stringify

const currentLongitude = JSON.stringify(position.coords.longitude);
const currentLatitude = JSON.stringify(position.coords.latitude);

您应该改为

const currentLongitude = position.coords.longitude;
const currentLatitude = position.coords.latitude;

答案 1 :(得分:0)

当您的经纬度为String时,将其转换为float。

答案 2 :(得分:0)

const currentLongitude = position.coords.longitude;
const currentLatitude = position.coords.latitude;

我的问题已经通过使用上面的代码解决了

答案 3 :(得分:0)

没有比解析这样的坐标位置容易的事情了

{
   latitude: parseFloat(myObj.latitude),
   longitude: parseFloat(myObj.longitude)
}