我正在使用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
},
任何人遇到这个问题并知道如何解决它?它是反应原生网正在运行的网络还是不应该从我的笔记本电脑网络位置拉出来?
我看过是否有其他人遇到过这个问题: Geolocation in React Native iOS 如果你搜索geolocation错误的反应原生ios,那么堆栈上的搜索只会显示6个结果... google也没什么帮助。
感谢您的帮助
答案 0 :(得分:8)
这是iOS模拟器(和Android模拟器)上的正确行为。您可以更改每个地理位置的模拟坐标(从其他答案转述):
<强> iOS 强>
<强> Android 强>
还有一个使用telnet
和geo fix
命令的Android explained here的命令行替代方案。
或者,你可以像ashutosh pandey建议并在真实设备上进行测试一样。