Android 集成高德地图定位笔录

哈~ 好久没来记笔记了,由于接手的他人的公司的项目集成了高德地图定位,突发心血来潮,也来体验体验这个过程了。

  • 浏览器搜索高德定位,进入高德开放平台,注册一个账号,当然有高德开放平台账号的话就不用注册了,登录就OK

  • 首先 进入自己账户的控制台,获取Key,进入自己账户的控制台,创建一个新应用。如果之前创建过应用,可直接跳过。

    Android 集成高德地图定位笔录_第1张图片
    1
    写Demo嘛,我就随意创建了一个

Android 集成高德地图定位笔录_第2张图片
2

添加新Key(这里需要获取SHA1,我的demo使用就是AS自带的debug签名文件,按照官方的教程获取它,然后把资料填写完整)


Android 集成高德地图定位笔录_第3张图片
image.png
Android 集成高德地图定位笔录_第4张图片
image.png

然后就能在控制台看到自己申请的 Key 啦~

  • 接下来 下载sdk了,我就下了个定位SDK,现在的版本是V3.7.0

    Android 集成高德地图定位笔录_第5张图片
    image.png

  • 将jar包放入项目中lib下面,配置好 build.gradle 文件(我这里使用的是拷贝jar包的方式,当然官方开发文档上还有添加SDK依赖的方式)


    Android 集成高德地图定位笔录_第6张图片
    image.png
    image.png
  • 添加高德 Key 打开项目的 AndroidManifest.xml 文件中,添加代码,声明service(每个app拥有自己单独的定位service),当然把刚刚申请到的key填充进去:

    Android 集成高德地图定位笔录_第7张图片
    image.png

  • 声明权限

    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
  • 有关代码混淆,我这demo不需要代码混淆了,如果需要的话,开发文档上有详细怎么配置(http://lbs.amap.com/api/android-location-sdk/guide/create-project/dev-attention)

  • 最后 写代码开始了
    写了个专门定位的类,然后使用方法就是在需要定位的Acitivity或者Fragment implement LocationCallBack 即可

public class MapLocationHelper implements AMapLocationListener {

    /**
     * 声明mlocationClient对象
     */
    private AMapLocationClient mLocationClient;
    /**
     * 声明mLocationOption对象
     */
    public AMapLocationClientOption mLocationOption = null;
    private LocationCallBack mLocationCallBack;
    private Context mContext;

    public MapLocationHelper(Context context) {
        mContext = context;
        initLocation();
    }

    public MapLocationHelper(Context context, LocationCallBack locationCallback) {
        mContext = context;
        mLocationCallBack = locationCallback;
        initLocation();
    }

    /**
     * 初始化定位参数
     */
    private void initLocation() {
        mLocationClient = new AMapLocationClient(mContext);
        mLocationOption = new AMapLocationClientOption();
        // 设置定位监听
        mLocationClient.setLocationListener(this);
        // 设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
        // 设置定位间隔,单位毫秒,默认为2000ms
        mLocationOption.setInterval(2000);
        // 设置定位参数
        mLocationClient.setLocationOption(mLocationOption);
    }

    /**
     * 设置回调
     * @param locationCallBack
     */
    public void setLocationCallBack(LocationCallBack locationCallBack){
        mLocationCallBack = locationCallBack;
    }

    /**
     * 开启定位
     */
    public void startMapLocation() {
        if (!mLocationClient.isStarted()) {
            mLocationClient.startLocation();
        }
    }

    /**
     * 停止定位服务
     */
    public void stopMapLocation() {
        if (mLocationClient.isStarted()) {
            mLocationClient.stopLocation();
        }
    }

    @Override
    public void onLocationChanged(AMapLocation aMapLocation) {
        if (aMapLocation != null) {
            if (aMapLocation.getErrorCode() == 0) {
                // 可在其中解析amapLocation获取相应内容。
                mLocationCallBack.onCallLocationSuc(aMapLocation);
                stopMapLocation();
            } else {
                //定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。
                Log.e("AmapError", "location Error, ErrCode:"
                        + aMapLocation.getErrorCode() + ", errInfo:"
                        + aMapLocation.getErrorInfo());
                stopMapLocation();
            }
        } else {
            stopMapLocation();
        }
    }
}
public interface LocationCallBack {

    void onCallLocationSuc(AMapLocation location);
}

使用定位:


image.png

初始化:

MapLocationHelper helper = new MapLocationHelper(this, this);
helper.startMapLocation();

拿到定位数据:

@Override
    public void onCallLocationSuc(AMapLocation location) {
        Log.d(TAG, "Address:" + location.getAddress());
        Log.d(TAG, "City:" + location.getCity());
        Log.d(TAG, "CityCode:" + location.getCityCode());
        Log.d(TAG, "Country:" + location.getCountry());
        Log.d(TAG, "Province:" + location.getProvince());
        Log.d(TAG, "Latitude:" + location.getLatitude());
        Log.d(TAG, "Longitude:" + location.getLongitude());
    }

打印结果:
Android 集成高德地图定位笔录_第8张图片
image.png

OK!完结了!

你可能感兴趣的:(Android 集成高德地图定位笔录)