React Native 和 iOS 模拟器的错误定位
Wrong Geolocation with React Native and iOS simulator
我正在使用 react-native-maps 并使用 react-native api 进行地理定位。当我通过 api 使用位置时,模拟器上返回的内容显示我在 San F运行cisco 而不是我所在的科罗拉多州丹佛市。为什么我的位置不显示我所在的位置是有原因的?
我的函数 运行 位置
// 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 是 运行 正在打开的网络还是不应该从我的笔记本电脑网络位置拉出?
我查看是否有其他人 运行 关注此问题:
Geolocation in React Native iOS
如果您搜索地理定位错误,则堆栈上的搜索仅显示 6 个结果 react-native ios...google 也没有太大帮助。
感谢您的帮助
这是 iOS 模拟器(和 Android 模拟器)的正确行为。您可以像这样更改每个地理定位的模拟坐标(从其他答案中解释):
iOS
- 运行 应用在 iOS 模拟器中。
- 在顶部菜单栏,您会找到功能 -> 位置 -> 自定义位置..(或者您可以选择使用其他位置)。
- 设置位置的纬度和经度。
- 运行 应用在 Android 模拟器中。
- 单击工具栏中的省略号 (...)。
- 在位置下新打开的设置中编辑坐标。
Android explained here 还有一个命令行选项,使用 telnet
和 geo fix
命令。
或者,您可以按照 ashutosh pandey 的建议在真实设备上进行测试。
我正在使用 react-native-maps 并使用 react-native api 进行地理定位。当我通过 api 使用位置时,模拟器上返回的内容显示我在 San F运行cisco 而不是我所在的科罗拉多州丹佛市。为什么我的位置不显示我所在的位置是有原因的?
我的函数 运行 位置
// 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 是 运行 正在打开的网络还是不应该从我的笔记本电脑网络位置拉出?
我查看是否有其他人 运行 关注此问题: Geolocation in React Native iOS 如果您搜索地理定位错误,则堆栈上的搜索仅显示 6 个结果 react-native ios...google 也没有太大帮助。
感谢您的帮助
这是 iOS 模拟器(和 Android 模拟器)的正确行为。您可以像这样更改每个地理定位的模拟坐标(从其他答案中解释):
iOS
- 运行 应用在 iOS 模拟器中。
- 在顶部菜单栏,您会找到功能 -> 位置 -> 自定义位置..(或者您可以选择使用其他位置)。
- 设置位置的纬度和经度。
- 运行 应用在 Android 模拟器中。
- 单击工具栏中的省略号 (...)。
- 在位置下新打开的设置中编辑坐标。
Android explained here 还有一个命令行选项,使用 telnet
和 geo fix
命令。
或者,您可以按照 ashutosh pandey 的建议在真实设备上进行测试。