4

我正在使用 react-native-maps 并使用 react-native api 进行地理定位。当我通过 api 使用位置时,模拟器上的返回显示我在旧金山而不是我所在的科罗拉多州丹佛市。为什么我的位置不会显示我在哪里,有什么原因吗?

我运行该位置的函数

  // Get current users locaiton on load
  componentDidMount() {
    navigator.geolocation.getCurrentPosition((position) => {
      console.log(position);
      let newLat = parseFloat(position.coords.latitude);
      console.log("newLat", newLat);
      let newLng = parseFloat(position.coords.longitude);
      console.log("newLng", newLng);
      // set region of user to lat and long position
      // deltas set distance from marker (zoom) on map
      this.setState({
        region: {
          latitude: newLat,
          longitude: newLng,
          latitudeDelta: 0.0250,
          longitudeDelta: 0.0125
        },
        error: null
      });
      console.log(this.state);
    }, 
      // if error set state with error
      (err) => {
        console.log(err),
        // set location accuracy on
        // max time to find location in 5 sec
        // max time to use cached location for phone 5 sec
        { timeout: 5000, maximumAge: 5000 };
      }
    );

    // watch for changes and update location
    this.watchId = navigator.geolocation.watchPosition((position) => {
      console.log(position);
      let newLat = parseFloat(position.coords.latitude);
      console.log("newLat", newLat);
      let newLng = parseFloat(position.coords.longitude);
      console.log("newLng", newLng);
      // set region of user to lat and long position
      // deltas set distance from marker (zoom) on map
      this.setState({
        region: {
          latitude: newLat,
          longitude: newLng,
          latitudeDelta: 0.0250,
          longitudeDelta: 0.0125
        },
        error: null
      });
      console.log(this.state);
    },
      (err) => {
        console.log(err),
        // set location accuracy on
        // max time to find location in 5 sec
        // max time to use cached location for phone 5 sec
        // distance before location called again 10 m
        { timeout: 5000, maximumAge: 5000, distanceFilter: 10 }
      }
    );
  }

我在初始状态下预设的位置是:

this.state ={
      region: {
          latitude: 39.739236,
          longitude: -104.990251,
          latitudeDelta: 0.1000,
          longitudeDelta: 0.0500
      },

这比iOS模拟器向我展示的位置更接近 我的位置的控制台日志

有人遇到这个问题并知道如何解决吗?是 react-native 正在运行的网络还是不应该从我的笔记本电脑网络位置提取?

我已经查看是否有其他人遇到过这个问题: React Native iOS 中 的地理定位,如果您搜索地理定位错误的 react-native ios,则堆栈上的搜索仅显示 6 个结果......谷歌也没有太大帮助。

谢谢你的帮助

4

1 回答 1

18

这是 iOS 模拟器(和 Android 模拟器)上的正确行为。您可以像这样更改每个地理定位的模拟坐标(从其他答案转述):

iOS

  1. 在 iOS 模拟器中运行应用程序。
  2. 在顶部菜单栏中,您会找到功能 -> 位置 -> 自定义位置..(或者您可以选择使用其他位置)。
  3. 设置位置的纬度和经度。

安卓

  1. 在 Android 模拟器中运行应用程序。
  2. 单击工具栏中的省略号 (...)。
  3. 在位置下新打开的设置中编辑坐标。

还有一个用于 Android 的命令行替代方案,这里使用telnetgeo fix命令进行了解释。

或者,您可以按照 ashutosh pandey 的建议进行操作,并在真实设备上进行测试。

于 2017-08-08T00:01:37.140 回答