日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

uni-app 调用安卓 高德sdk获取经纬度(替代 uni.getLocation)

發布時間:2023/12/14 编程问答 71 豆豆
生活随笔 收集整理的這篇文章主要介紹了 uni-app 调用安卓 高德sdk获取经纬度(替代 uni.getLocation) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

因為項目需要用到精確打卡,所以一兩秒就要更新一次經緯度,uni-app 按照官方接了離線安卓高德sdk(鏈接:高德sdk 離線鏈接) 用 uni.getLocation 獲取到的經緯度是蠻準的,有六位小數,但是拿著手機走一段距離,居然要二三十秒才會變經緯度(吐了)

用了多個手機測試也是一樣,最后想到了 用uni-app 直接調用安卓 高德sdk 直接獲取經緯度

?

下面直接貼目錄結構和代碼了,(前提是你按照上面 高德sdk離線鏈接步驟引入 arr包)

1:在下圖目錄 創建你的java class

?

下面是我的代碼。com.example.myapplication 為我的安卓包名,你們要改為自己的包名

我的代碼參考的是?高德定位數據

package com.example.myapplication;import com.amap.api.location.AMapLocation; import com.amap.api.location.AMapLocationClient; import com.amap.api.location.AMapLocationClientOption; import com.amap.api.location.AMapLocationClientOption.AMapLocationMode; import com.amap.api.location.AMapLocationListener;import android.util.Log;import static io.dcloud.common.util.ReflectUtils.getApplicationContext;public class LocationMy{//聲明AMapLocationClient類對象public AMapLocationClient mLocationClient = null;// 這個方法初始化一次就行了public void startMy() {//初始化定位mLocationClient = new AMapLocationClient(getApplicationContext());//設置定位回調監聽mLocationClient.setLocationListener(mLocationListener);//初始化AMapLocationClientOption對象mLocationOption = new AMapLocationClientOption();//設置定位模式為AMapLocationMode.Battery_Saving,高精度模式。mLocationOption.setLocationMode(AMapLocationMode.Hight_Accuracy);//設置定位間隔,單位毫秒,默認為2000ms,最低1000ms。mLocationOption.setInterval(1000);//單位是毫秒,默認30000毫秒,建議超時時間不要低于8000毫秒。mLocationOption.setHttpTimeOut(20000);//給定位客戶端對象設置定位參數mLocationClient.setLocationOption(mLocationOption);//啟動定位mLocationClient.startLocation();Log.e("aaa","aaaa");}// 返回當前位置的經緯度static double lng = 1.1;static double lat = 1.1;public double rLng(){return lng;}public double rLat(){return lat;}//聲明定位回調監聽器public AMapLocationListener mLocationListener = new AMapLocationListener(){public void onLocationChanged(AMapLocation amapLocation) {Log.e("take","caijielong");// TODO Auto-generated method stubif (amapLocation != null) {int mycode = amapLocation.getErrorCode();Log.e("myCode",String.valueOf(mycode));if (amapLocation.getErrorCode() == 0) {//可在其中解析amapLocation獲取相應內容。double locationType = amapLocation.getLocationType();//獲取當前定位結果來源,如網絡定位結果,詳見定位類型表double latitude = amapLocation.getLatitude();//獲取緯度double longitude = amapLocation.getLongitude();//獲取緯度Log.e("Amap==經度:緯度", "locationType:"+locationType+",latitude:"+latitude);lat = latitude;lng = longitude;}else {//定位失敗時,可通過ErrCode(錯誤碼)信息來確定失敗的原因,errInfo是錯誤信息,詳見錯誤碼表。//todo mycode 為12時,為缺少定位權限,mycode要傳到uni-app 提醒用戶開啟權限 具體錯誤碼:https://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode/}}}};//聲明AMapLocationClientOption對象public AMapLocationClientOption mLocationOption = null;}

?

2: uni-app 前端調用

// com.example.myapplication 為安卓包名,LocationMy 為java class名 var LocationMy = plus.android.importClass("com.example.myapplication.LocationMy") var LocationMy = new LocationMy(); LocationMy.startMy(); // 這個方法一定要執行一次就行了//下面兩個即為 安卓 高德sdk的經緯度 LocationMy.rLng(); LocationMy.rLat();

調用成功 end~? 隔一秒輸出經緯度 nice

有不懂的可以底下評論問我,一起研究~~

?

順便貼下? ?uni-app 調用安卓原生方法代碼

總結

以上是生活随笔為你收集整理的uni-app 调用安卓 高德sdk获取经纬度(替代 uni.getLocation)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。