我正在使用react-native-maps
构建应用。在测试中,我使用一个按钮进行设置,该按钮可以在两个不同的位置(DC和Concord NH)之间切换,而其中之一恰好是我当前的实际位置。我也有一个“找我!”按钮转到当前位置。
在Android模拟器上,当我点击“找到我”时,它会跳转到San Fransisco,我认为这是设置模拟器位置的地方。我没有真正的Android设备
在iOS模拟器和iPhone上,DC / NH按钮都可以使用,当我切换到DC时,在iPhone上可以看到蓝点。但是,在iOS模拟器和iPhone上,当我单击“找到我”时,我都会收到此错误(以下坐标是在模拟器上运行时的结果:
Exception thrown while executing UI block:
Invalid Region <center: +37.33233141, -122.03121860, span: +0.04491556, -5.73770224>
在我的iPhone上,使用不同的坐标明智地发生了相同的错误。
似乎Android和iOS正在不同地转换坐标,或类似的东西。他们对我给DC和NH给出的坐标都相同,并且当我调高这些位置时似乎显示相同的区域。
顺便说一句,我在iOS上使用Apple Maps –还没准备好完成使用Google Maps的全部弹出代码的事情。
这是我用来获取当前位置并将其转换为React Native可以正确理解的数字的代码:
calculateRegion(latitude, longitude, accuracy) {
const oneDegreeOfLongitudeInMeters = 111.32;
const circumference = 40075 / 360;
const latitudeDelta = accuracy / oneDegreeOfLongitudeInMeters;
const longitudeDelta = accuracy * (1 / Math.cos(latitude * circumference));
const region = { latitude, longitude, latitudeDelta, longitudeDelta };
this.setState({ region });
}
getLocation = () => {
navigator.geolocation.getCurrentPosition(position => {
const lat = position.coords.latitude;
const long = position.coords.longitude;
const accuracy = position.coords.accuracy;
this.calculateRegion(lat, long, accuracy);
});
};
有人对此有想法吗?