Android中集成高德地图SDK实现地图定位和导航功能(二)

我们接着上一篇文章开始继续实现android中集成高德地图的SDK实现地图 定位,搜索,导航的功能

如何让地图在手机上实现呢?

1.配置AndroidManifest 中的权限申请

可以参考官方文档

  <!--允许访问网络,必选权限-->
    <uses-permission android:name="android.permission.INTERNET" />

    <!--允许获取精确位置,实时导航为必选-->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <!--允许获取粗略位置,实时导航为必选-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

    <!--允许获取设备和运营商信息,用于问题排查和网络定位(无gps情况下的定位),若需网络定位功能则必选-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />

    <!--允许获取网络状态,用于网络定位(无gps情况下的定位),若需网络定位功能则必选-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <!--允许获取wifi网络信息,用于网络定位(无gps情况下的定位),若需网络定位功能则必选-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

    <!--允许获取wifi状态改变,用于网络定位(无gps情况下的定位),若需网络定位功能则必选-->
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

    <!--后台获取位置信息,若需后台定位或持续导航则必选-->
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />

    <!--用于申请调用A-GPS模块,卫星定位加速-->
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />

    <!--允许写入扩展存储,用于写入缓存定位数据-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!--用于用户链接蓝牙时,在导航组件页面的蓝牙连接提醒,建立链接后开发者可选用蓝牙通道进行tts播报-->
    <uses-permission android:name="android.permission.BLUETOOTH" />

    <!--用与导航状态中保持屏幕常亮-->
    <uses-permission android:name="android.permission.WAKE_LOCK"/>

    <!--允许写设备缓存,用于问题排查-->
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />

    <!--允许读设备等信息,用于问题排查-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

android6.0以后需要动态申请权限 这里我就不做详细解释了

设置高德地图的key

在androidMainfest文件的appliation 标签中添加之前在高的开发者平台上的key,代码如下

  <meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="这个地方就是你之前申请的key" />

我的key是ba63b…
在这里插入图片描述

初始化地图控件

首先要先新创建一个承载地图的Activiy,然后初始化MapView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".activity.GaodeMapActivity"
    android:orientation="vertical">
    
     <com.amap.api.maps.MapView
        android:id="@+id/gaode_map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:layout_editor_absoluteX="16dp"
        tools:layout_editor_absoluteY="39dp">
     </com.amap.api.maps.MapView>

</LinearLayout>

然后再Activity中初始化地图空,这边需要了解到Activity生命周期和这个地图绑定到一起

public class GaodeMapActivity extends AppCompatActivity {
   
    private static final String TAG = "GaodeMapActivity";
    private MapView mapView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gaode_map);
        // 这一步操作就设置高德地图中的隐私合规,不然可能会出现地图无法正确加载的问题
        MapsInitializer.updatePrivacyShow(this,true,true);
        MapsInitializer.updatePrivacyAgree(this,true);
        //初始化地图控件
        mapView = (MapView) findViewById(R.id.gaode_map);
        //这个地方需要捕获下异常,不然会出现编译不过的情况
        try {
   
            mLocationClient = new AMapLocationClient(GaodeMapActivity.this);
        }catch (Exception e) {
   
         Log.e(TAG, e.getMessage());
        }
        mapView.onCreate(savedInstanceState);
        if (aMap == null) {
   
            //展示地图
            aMap = mapView.getMap();
            Log.i(TAG,"展示地图");
        }

       @Override
       protected void onDestroy() {
   
        super.onDestroy();
        mapView.onDestroy();
       }

      @Override
      protected void onResume() {
   
        super.onResume();
        mapView.onResume();
      }

      @Override
      protected void onPause() {
   
        super.onPause();
        mapView.onPause();
      }

      @Override
      public void onSaveInstanceState(@NonNull 
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值