android - 手机在android中的当前位置
问题描述
他们是否有任何付费或免费应用程序可以告诉我手机当前位置的经度和纬度。我在我当前的反应本机代码中使用 GeoDist,但没有在 android 上获得手机的确切当前位置。如果有人可以向我推荐付费或免费代码以获取手机的当前位置,我将不胜感激。下面是我的代码,它没有给我正确的计算:
componentDidMount() {
navigator.geolocation.getCurrentPosition(
(position) => {
this.setState({
latitude: position.coords.latitude,
longitude: position.coords.longitude,
error: null,
});
},
(error) => this.setState({ error: error.message }),
{ enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 },
);
}
var geodist = require('geodist')
var sLat= this.state.latitude;
var sLong = this.state.longitude;
var dist = geodist({lat: sLat, lon: sLong}, {lat: item.LatL, lon: item.Long2}, 'mi'
)
谢谢你。
解决方案
通过查看您的代码,我想建议对您的代码进行一些更改:
如果您想要精确的位置,请使用parseFloat()来获取纬度和经度,因为 float 将始终为您提供精确的值。
在AndroidManifest.xml中提供这些权限
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
然后在您的 .js 文件中进行以下更改:
const { width, height } = Dimensions.get('window');
const ASPECT_RATIO = width / height
const LATITUDE_DELTA = 0.0922
const LONGITUDE_DELTA = LATITUDE_DELTA * ASPECT_RATIO
取this.state中的一个状态为
initialPosition: {
latitude: 0,
longitude: 0,
latitudeDelta: 0,
longitudeDelta: 0,
},
在componentDidMount()中执行此操作
componentDidMount() {
navigator.geolocation.getCurrentPosition((position) => {
var lat = parseFloat(position.coords.latitude)
var long = parseFloat(position.coords.longitude)
var initialRegion = {
latitude: lat,
longitude: long,
latitudeDelta: LATITUDE_DELTA,
longitudeDelta: LONGITUDE_DELTA,
}
this.setState({initialPosition: initialRegion})
},
(error) => alert(JSON.stringify(error)),
{enableHighAccuracy: true, timeout: 20000,});
}
然后你可以在你的 MapView 中使用这个 initialPosition 状态。
推荐阅读
- java - 如何知道 com.sun.jdi.ObjectReference 是否是枚举?
- flutter - 为不同的字段值重用 Datepicker
- python - 从字典列表中提取信息
- mathematical-optimization - 我不明白为什么 x 没有价值
- javascript - 如何创建将在 html 和 js 中显示隐藏消息的密码
- javascript - hexo博客中括号不能正确显示
- c# - 如何关闭 Azure 函数中的 NLog 日志记录?
- r - R每天的行数
- c++ - 有没有办法将 Windows 10 win32 / gdi++ GUI 程序的样式更改为 Windows 95?
- java - 雅可可的问题