如何创建设计个人网站,常用的网站建设技术有什么软件,青岛核酸检测最新消息,商城app定制开发最近做React Native时#xff0c;需要用到城市定位的功能#xff0c;React Native中文网的定位部分中也提供了相应的方法。主要用到的方法有#xff1a;这里只需要获取到经纬度#xff0c;城市等信息#xff0c;持续监听的函数就不需要了。这里使用 getCurrentPosition 方…最近做React Native时需要用到城市定位的功能React Native中文网的定位部分中也提供了相应的方法。主要用到的方法有这里只需要获取到经纬度城市等信息持续监听的函数就不需要了。这里使用 getCurrentPosition 方法获取当前位置信息再用逆地址解析服务完成地址获取。获取经纬度城市地址信息完整步骤如下1. 导入Geolocationimport Geolocation from Geolocation;2.调用 getCurrentPosition 方法得到经纬度这里将这个操作封装成一个方法并返回Promise。//获取经纬度的方法 Longitude Latitudelet getLongitudeAndLatitude () {//获取位置再得到城市先后顺序通过Promise完成return new Promise((resolve, reject) {Geolocation.getCurrentPosition(location {//可以获取到的数据var result 速度 location.coords.speed \n经度 location.coords.longitude \n纬度 location.coords.latitude \n准确度 location.coords.accuracy \n行进方向 location.coords.heading \n海拔 location.coords.altitude \n海拔准确度 location.coords.altitudeAccuracy \n时间戳 location.timestamp;// ToastAndroid.show(UTIl location.coords.longitude, ToastAndroid.SHORT);resolve([location.coords.longitude, location.coords.latitude]);},error {// Alert.alert(获取位置失败 error, )reject(error);});})}经纬度海拔等信息的获取方式就是以 location.coords.longitude,location.coords.latitude location.coords.altitudeAccuracy的方式得到。如果只是需要获取经纬度这里已经完成。可以通过setState或者赋值给全局变量等方式记录。为了进一步获取城市这里Promise将经纬度组合成一个数组resolve传递出去。3.使用逆地址解析服务将经纬度解析成地址信息这里可以通过百度地图或者腾讯位置服务的逆地址解析服务来完成流程如下注册成为开发者创建自己的应用然后获取key或认证加上经纬度等参数来发起请求例如百度地图的请求方式https://api.map.baidu.com/geocoder/v2/?outputjsonak9a9a9a9a9a9a9a9a9a9a9a9a9alocation39.206526,116.909158(9a9a…就是你申请的ak认证对应在你创建的应用中)通过Postman 测试请求的效果如下这里需要将 location 经纬度参数替换为自己通过 getCurrentPosition 方法获取到的经纬度。也就是先获取到经纬度再通过逆地址解析获取到城市等地址信息。将这个操作再封装成一个方法getCityLocation() {return new Promise((resolve, reject) {getLongitudeAndLatitude()//获取经纬度的方法返回的是经纬度组成的数组.then((locationArr) {// Alert.alert(, locationArr[1]);let longitude locationArr[0];let latitude locationArr[1];this.getNetData(BaiduMap_URL latitude , longitude).then((data) {if (data.status 0) {resolve(data);} else {reject(ErrorDeal.getError(data.code));}}).catch((data) {reject(ErrorDeal.getError(data.code));})}).catch((data) {reject(ErrorDeal.getError(data.code));})})}getLongitudeAndLatitude 就是上面的获取经纬度的方法this.getNetData是一个fetch 请求的封装。拼接请求 Urlfetch请求此时 resolve 的数据就是 Postman 解析的 json 数据了。//获取网络数据getNetData(url) {return new Promise((resolve, reject) {fetch(url).then((response) response.json()).then((responseData) {resolve(responseData);}).catch((error) {reject(ErrorDeal.getError(NetWork_Error))}).done()})}4.获取信息并处理上面 getCityLocation 返回的 Promise 中 resolve 传递的 data 就是 json 数据了就已经可以因自身需求进行数据处理显示的操作了。this.getCityLocation().then((data) {// Alert.alert(位置, JSON.stringify(data));this._confirmCity(data);}).catch((error) {//ToastAndroid.show(失败 JSON.stringify(error), ToastAndroid.SHORT);});调用 getCityLocation再 then 方法处理处理 data 此时的 data 是一个 json 对象。例如我的处理是调用 _confirmCity 方法弹出一个城市切换的确认框//弹出定位框_confirmCity(data) {let address data.result.addressComponent;if (address!) {Alert.alert(城市定位, \n当前城市为 address.province address.city \n \n 是否设为当前城市\n,[{text: 设为当前城市, onPress: () {this.setCurrentCity(address.city)}},{text: 取消}])}}效果图这里就已经完成了经纬度的获取城市地址信息的获取功能。