高德地图定位及导航开发流程

这篇博客详细介绍了如何在Android应用中集成高德地图API,包括配置、添加库、设置权限、定位及蓝点显示、路径规划等功能的实现步骤。作者展示了从创建应用、添加key到实现定位、地图显示、路径规划等全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于高德地图导航定位及导航

最进简单研究了一下关于高德地图的使用,,简单实现了定位搜素,以及驾车的路径规划,一下将介绍我的实现过程:


先展示一下实现的简单效果:

首先需要进行配置,配置详情如下:

1、打开高德开放平台

2、创建应用

3、添加新key:dd9dde5da25a5811031cb1beb5a******

sha1值获取:找到系统默认的debug.keystore(C:\Users\Administrator\.android\debug.keystore)

cmd窗口或android studio 中的Terminal中执行命令:keytool -v -list -keystore keystore地址

4、添加jar和so库(不要添加v4包)

so库添加方式:

第一种:使用默认配置,不需要修改build.gradle。在 main 目录下创建文件夹 jniLibs (如果有就不需要创建了),将下载文件的 armeabi 文件夹复制到这个目录下,如果已经有这个目录,将下载的 so 库复制到这个目录即可。

第二种:使用自定义配置,将下载文件的 armeabi 文件夹复制到 libs 目录,如果有这个目录,请将下载的 so 库复制到这个目录,然后打开build.gradle,找到 sourceSets 标签:

sourceSets{

main{

jniLibs.srcDirs = ['libs']

}

}

5、配置

1、配置AndroidManifest.xml

1、声明Service组件

<service android:name="com.amap.api.location.APSService"></service>

2、声明权限

<!--用于进行网络定位-->

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>

<!--用于访问GPS定位-->

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

<!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>

<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

<!--用于访问网络,网络定位需要上网-->

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

<!--用于读取手机当前的状态-->

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

<!--用于写入缓存数据到扩展存储卡-->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

<!--用于申请调用A-GPS模块-->

<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>

<!--用于申请获取蓝牙信息进行室内定位-->

<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>

3、设置高德Key

<meta-data android:name="com.amap.api.v2.apikey" android:value="key">//开发者申请的key       

            

</meta-data>

下面实现定位和蓝点显示:

1、声明成员变量

//声明AMapLocationClient类对象

public AMapLocationClient mLocationClient = null;

2、初始化定位

//初始化定位

mLocationClient = new AMapLocationClient(getApplicationContext());

3、设置定位回调监听

mLocationClient.setLocationListener(new AMapLocationListener(){

 @Override

             public void onLocationChanged(AMapLocation aMapLocation) {

//获取定位结果

}

});

4、定位结果处理

if (aMapLocation != null) {

            if (aMapLocation.getErrorCode() == 0) {

                //可在其中解析amapLocation获取相应内容。

                int locationType = aMapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表

                double latitude = aMapLocation.getLatitude();//获取纬度

                double longitude = aMapLocation.getLongitude();//获取经度

                float accuracy = aMapLocation.getAccuracy();//获取精度信息

                String address = aMapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址。

                aMapLocation.getCountry();//国家信息

                aMapLocation.getProvince();//省信息

                aMapLocation.getCity();//城市信息

                aMapLocation.getDistrict();//城区信息

                aMapLocation.getStreet();//街道信息

                aMapLocation.getStreetNum();//街道门牌号信息

                aMapLocation.getCityCode();//城市编码

                aMapLocation.getAdCode();//地区编码

                aMapLocation.getAoiName();//获取当前定位点的AOI信息

                aMapLocation.getBuildingId();//获取当前室内定位的建筑物Id

                aMapLocation.getFloor();//获取当前室内定位的楼层

                //获取定位时间

                SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

                Date date = new Date(aMapLocation.getTime());

                df.format(date);

                Log.e("TAG", "纬度:" + latitude + "   经度:" + longitude + "  地址:" + address);

            } else {

                //定位失败时,可通过ErrCode(错误码)信息来确定失败的原因,errInfo是错误信息,详见错误码表。

                Log.e("AmapError", "location Error, ErrCode:"

                    + aMapLocation.getErrorCode() + ", errInfo:"

                    + aMapLocation.getErrorInfo());

            }

}

7、地图

1、在xml中声明MapView控件

2、在activity中初始化MapView

3、在声明周期中调用MapView的声明周期:onCreate\onResume\onPause\onDestroy\onSaveInstanceState

8、蓝点

1、创建MyLocationStyle对象: style = new MyLocationStyle();

2、设置定位间隔时间:style.interval(2000);

3、设置圆形区域:

1、圆形区域填充色:style.radiusFillColor(Color.rgb(0, 255, 255));

2、圆形区域(以定位位置为圆心,定位半径的圆形区域)的边框颜色:style.strokeColor(Color.rgb(0, 100, 255));

3、圆形区域(以定位位置为圆心,定位半径的圆形区域)

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值