## 使用场景

定位



## 效果展示

<img src="./other/效果.png" alt="效果" style="zoom:50%;" />



## 开发环境配置

| 软件           | 版本      |
| -------------- | --------- |
| autojs         | 8.7.3-0   |
| java           | 1.8.0_131 |
| android studio | 4.1.2     |



## 原理

autojs使用高地地图sdk, 实现设备定位



## 准备工作

1. 阅读高德地图官方文档

   > https://lbs.amap.com/api/android-location-sdk/locationsummary/  

   

2. 下载jar: **AMap_Location_V5.3.0_20210317.jar**

   > https://lbs.amap.com/api/android-location-sdk/download/

   

3. 将jar转为dex

   dx是android studio的命令, 我的路径: **C:\Users\Administrator\AppData\Local\Android\Sdk\build-tools\30.0.3**
   
   ```shell
   dx --dex --output=AMap_Location_V5.3.0_20210317.dex AMap_Location_V5.3.0_20210317.jar
   ```



## 开始写代码

1. 加载dex

   ```js
   let dexPath = "AMap_Location_V5.3.0_20210317.dex";
   runtime.loadDex(dexPath);
   ```

   

2. 初始化定位

   ```js
   // 初始化定位
   //声明AMapLocationClient类对象
   let mLocationClient = null;
   //初始化定位
   mLocationClient = new AMapLocationClient(context);
   //设置定位回调监听
   mLocationClient.setLocationListener(getAMapLocationListener());
   ```

   

3. 配置定位参数

   ```js
   //声明AMapLocationClientOption对象
   let mLocationOption = null;
   //初始化AMapLocationClientOption对象
   mLocationOption = new AMapLocationClientOption();
   //设置定位场景，目前支持三种场景（签到、出行、运动，默认无场景）
   mLocationOption.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.SignIn);
   //设置定位模式为AMapLocationMode.Hight_Accuracy，高精度模式。
   mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
   //获取一次定位结果：
   mLocationOption.setOnceLocation(true);
   //设置是否返回地址信息（默认返回地址信息）
   mLocationOption.setNeedAddress(true);
   //给定位客户端对象设置定位参数
   mLocationClient.setLocationOption(mLocationOption);
   ```

   

4. 启动定位

   ```js
   //设置场景模式后最好调用一次stop，再调用start以保证场景模式生效
   mLocationClient.stopLocation();
   mLocationClient.startLocation();
   ```

   

5. 退出时释放资源

   ```js
   events.on("exit", () => {
     log("exit");
     log("stopLocation");
     mLocationClient.stopLocation(); //停止定位后，本地定位服务并不会被销毁
     log("onDestroy");
     mLocationClient.onDestroy(); //销毁定位客户端，同时销毁本地定位服务。
   });
   ```



6. 以上就是autojs使用高德地图定位的所有步骤



## 完整源码





## 微信公众号 AutoJsPro教程



![officialaccount.jpg](./other/officialaccount.jpg)



## QQ群



747748653



![给我个面子小图](./other/给我个面子小图.jpg)