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 stub
if (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 呼叫安卓原生方法程式碼
相關文章
- 高德解析城市的分析,根據高德的經緯度獲取城市cityCode
- java百度地圖介面呼叫獲取經緯度Java地圖
- mapbox獲取各種經緯度
- Java根據地理位置獲取經緯度(呼叫百度地圖API)Java地圖API
- uni-app:獲取當前經緯度解決方案+如何佈置全域性元件APP元件
- Android高德地圖定位SDK 返回資訊中只有經緯度問題解決Android地圖
- 呼叫百度api透過經緯度獲取實際地理位置資訊API
- 微信小程式 計算兩地之間的距離 + 高德地圖獲取經緯度 + elasticsearch微信小程式地圖Elasticsearch
- C#根據經緯度獲取實體地址C#
- uniapp使用高德地圖解析經緯度轉為中文地址APP地圖圖解
- .NET程式獲取當前IP經緯度,並透過經緯度實現天氣查詢功能
- 透過經緯度計算距離獲取附近商家
- 如何透過裝置基站獲取裝置經緯度
- 智慧手環WIFI熱點和經緯度API獲取WiFiAPI
- 呼叫高德API 進行對接釘釘的簽到的經緯度計算行程軌跡API行程
- js呼叫百度地圖介面繪製任意多邊形並獲取每個點的經緯度等JS地圖
- 高德 SDK
- js根據經緯度,獲取省市區。(百度地圖逆地址解析)JS地圖
- 微信小程式獲取手機定位+經緯度轉詳細地址微信小程式
- Python獲取IP的地理位置:經緯度,國家,區域,城市Python
- 獲取資料庫中到指定經緯度距離的座標資料庫
- java 經緯度處理、計算兩地的距離、獲取當前一定距離以內的經緯度值Java
- 安卓sdk webview獲取淘寶個人資訊100項,原始碼。安卓WebView原始碼
- 安卓獲取百度地圖sha1問題安卓地圖
- 經緯度轉換
- 安卓啟動時間獲取安卓
- 百度地圖JavaScript API獲取使用者當前經緯度並獲取使用者當前詳細地理位置地圖JavaScriptAPI
- java 經緯度處理、計算兩地的距離、獲取當前一定距離以內的經緯度值 2022-02-14 0Java
- 經緯度距離換算
- uniapp獲取軟體的根路徑(安卓)APP安卓
- 關於安卓 sdk 測試安卓
- uni-app 離線打包總結(安卓)APP安卓
- 獲取安卓中加密資料庫的金鑰安卓加密資料庫
- java 根據兩個位置的經緯度,來計算兩地的距離 經緯度處理Java
- 安卓呼叫攝像頭拍照安卓
- 手把手教你完成一個資料科學小專案(7):經緯度獲取與BDP視覺化資料科學視覺化
- java 根據經緯度計算圓周Java
- 如何快速將地址解析為經緯度座標?