美文网首页Android知识Android开发经验谈Android开发
Android简单集成高德地图,完成定位计算距离功能

Android简单集成高德地图,完成定位计算距离功能

作者: 进击的阿达 | 来源:发表于2017-06-27 17:28 被阅读498次
展示图.png
  1. 进入高德地图开放平台注册账号,创建应用。

  2. 注册创建应用之后为应用添加key值。

  3. 在应用中导入高德地图的第三方SDK,配置清单文件(注:为了适配Android6.0以上机型,需要使用动态权限申请)。

针对以上步骤高德开放平台中有详细的说明,下面是配置代码。

  1. 声明AMapLocationClient对象和AMapLocationClientOption对象
    //声明AMapLocationClient类对象
    public AMapLocationClient mLocationClient = null;
    //声明AMapLocationClientOption对象
    public AMapLocationClientOption mLocationOption = null;
public void getUserPoint() {
        //声明mLocationOption对象
        mLocationClient = new AMapLocationClient(this);
        //初始化定位参数
        mLocationOption = new AMapLocationClientOption();
        //设置单次定位
        mLocationOption.setOnceLocation(true);
        //获取最近3s内精度最高的一次定位结果:
        //设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。
        mLocationOption.setOnceLocationLatest(true);
        //设置定位监听
        mLocationClient.setLocationListener(this);
        //设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式
        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
        //设置定位间隔,单位毫秒,默认为2000ms
        mLocationOption.setInterval(2000);
        //设置定位参数
        mLocationClient.setLocationOption(mLocationOption);
        // 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,
        // 注意设置合适的定位时间的间隔(最小间隔支持为1000ms),并且在合适时间调用stopLocation()方法来取消定位请求
        // 在定位结束后,在合适的生命周期调用onDestroy()方法
        // 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除
        //启动定位
        mLocationClient.startLocation();
    }
  1. 配置完成之后设置请求结果回调获取当前定位的位置详情。
 @Override
    public void onLocationChanged(AMapLocation amapLocation){
        if (amapLocation != null) {
            if (amapLocation.getErrorCode() == 0) {
                //定位成功回调信息,设置相关消息
                amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表
                double latitude = amapLocation.getLatitude();//获取纬度
                double longitude = amapLocation.getLongitude();//获取经度
                mPoint = new DPoint(latitude,longitude);
                loadData();//后续操作
            } else {
                //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。
                Log.e("AmapError", "location Error, ErrCode:"
                        + amapLocation.getErrorCode() + ", errInfo:"
                        + amapLocation.getErrorInfo());
            }
        }
    }

从上面的方法中我获取到了当前用户的位置信息,并从中取出当前经纬度,声明一个坐标对象,DPoint mPoint = new DPoint(latitude,longitude)。
如果要求出两点之间的距离,同样也要将目标位置声明成一个DPoint对象,然后调用SDK中的方法

CoordinateConverter.calculateLineDistance(userPoint, dPoint);
// userPoint      我的点
// dPoint         目标点
float distance = CoordinateConverter.calculateLineDistance(userPoint, dPoint);
mDistance.setText("距您"+(int) distance + "m");

这样就能得出自己与目标点间的距离了,更多详细参数和设置方法可以参考API。
后续我还会分享一下在 Android 6.0 以上如何适配同时动态申请多个权限。

相关文章

  • Android简单集成高德地图,完成定位计算距离功能

    进入高德地图开放平台注册账号,创建应用。 注册创建应用之后为应用添加key值。 在应用中导入高德地图的第三方SDK...

  • iOS 高德地图的使用

    iOS:高德地图的使用 本人花了点时间集成了高德地图的几乎所有的功能,包含:地图的显示、地图的绘制、地图的定位、地...

  • Android高德SDK 地图篇一:集成高德SDK

    Android高德SDK 地图篇一:集成高德SDK 大家好,这是系列博文的第一篇: 系列博文会完成以下功能 一....

  • android快速集成高德地图

    android地图的集成比较简单。 创建一个android应用 在高德开放平台创建应用 集成 创建一个androi...

  • 集成百度地图遇到过的那些坑:(反geo检索发送失败)

    因为公司项目需求,需要集成百度地图实现定位功能和反地理编码功能。本人以前集成过百度地图完成过定位功能、地图显示和...

  • iOS集成高德地图SDK

    前言:关于这次集成高德地图,打算分几个内容定位 POI检索 导航 线路规划,现在只是简单地实现了前两个功能,先记录...

  • 获取SHA1

    今天遇到集成高德地图,不,是融云中的高德地图定位,填坑的。定位失败,一直提示定位失败,报错说key过期或者不正确。...

  • Android 集成高德地图定位笔录

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

  • 高德地图6.8.0定位修改的修复方法

    高德地图6.8.0或以上版本开启后台定位 问题 如果APP中使用了高德地图并且具有后台定位功能,然后在3D地图升级...

  • 高德地图集成总结

    iOS开发,第一次集成高德地图,实现了简单的定位,绘制气泡,导航。简单总结: 1.定位只是为了获取当前位置(如果需...

网友评论

    本文标题:Android简单集成高德地图,完成定位计算距离功能

    本文链接:https://www.haomeiwen.com/subject/vwvecxtx.html