【Android】AndroidApp加载高德地图

1 获取 SHA1

2 获取 AK

3 下载 JAR包

jar包和so文件:阿里云盘分享icon-default.png?t=N7T8https://www.alipan.com/s/71j7Lw59XtJ(1)将jar包添加至libs目录下,并且右击Add as library

(2)将so文件里面内容复制粘贴到src/main/jniLibs下(没有jniLibs,自己创建即可)

  需要注意的是上面的目录结构采用的是Project结构,并非Android结构

4 AndroidManifest.xml 中的修改

        在AndroidManifest.xml中需要增加两处信息:(1)获取权限(2)添加application的元信息

(1)获取权限,与<application>同级
    //地图SDK(包含其搜索功能)需要的基础权限
    <!--允许程序打开网络套接字-->
    <uses-permission android:name="android.permission.INTERNET" />
    <!--允许程序设置内置sd卡的写权限-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!--允许程序获取网络状态-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!--允许程序访问WiFi网络信息-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
(2)添加元信息,<application>内下级
    <meta-data
        android:name="com.amap.api.v2.apikey"
        android:value="你的AK">
    </meta-data>
(3)完整代码
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    
    //地图SDK(包含其搜索功能)需要的基础权限
    <!--允许程序打开网络套接字-->
    <uses-permission android:name="android.permission.INTERNET" />
    <!--允许程序设置内置sd卡的写权限-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!--允许程序获取网络状态-->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!--允许程序访问WiFi网络信息-->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    
    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.GestureMap"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="你的AK">
        </meta-data>
    </application>

</manifest>

5 activity_main.xml 中的修改

        在布局文件中,需要添加一个mapview来作为地图的容器

(1)添加地图容器
<com.amap.api.maps.MapView
    android:id="@+id/amap"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:ignore="MissingClass"/>
(2)完整代码
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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=".MainActivity">

    <com.amap.api.maps.MapView
        android:id="@+id/amap"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:ignore="MissingClass"/>

</androidx.constraintlayout.widget.ConstraintLayout>

6 MainActivity.java 中的修改

        在主程序中,进行以下几步:(1)引入隐私设置,在地图8.1.0版本起,调用SDK之前必须先调用更新隐私合规接口  (2)获取、创建地图等操作  (3)管理地图生命周期

(1)引入隐私设置
    //隐私设置更新
    MapsInitializer.updatePrivacyShow(this,true,true);
    MapsInitializer.updatePrivacyAgree(this,true);
(2)获取、创建地图等操作
    //获取地图控件引用
    mMapView = (MapView) findViewById(R.id.amap);
    //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
    mMapView.onCreate(savedInstanceState);
    //获取地图对象
    aMap=mMapView.getMap();
(3)管理地图生命周期
    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图
        mMapView.onDestroy();
    }
    @Override
    protected void onResume() {
        super.onResume();
        //在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图
        mMapView.onResume();
    }
    @Override
    protected void onPause() {
        super.onPause();
        //在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制
        mMapView.onPause();
    }
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态
        mMapView.onSaveInstanceState(outState);
    }
 (4)完整代码
package com.wemap.yzzy;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.amap.api.maps.AMap;
import com.amap.api.maps.MapView;
import com.amap.api.maps.MapsInitializer;
import com.amap.api.maps.UiSettings;

public class MainActivity extends AppCompatActivity {

    MapView mMapView = null;  //地图容器
    AMap aMap=null;  //地图

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //隐私设置更新
        MapsInitializer.updatePrivacyShow(this,true,true);
        MapsInitializer.updatePrivacyAgree(this,true);

        //获取地图控件引用
        mMapView = (MapView) findViewById(R.id.amap);
        //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
        mMapView.onCreate(savedInstanceState);
        //获取地图对象
        aMap=mMapView.getMap();

        // 获取缩放按钮的 UiSettings 对象
        UiSettings uiSettings = aMap.getUiSettings();
        // 隐藏缩放按钮
        uiSettings.setZoomControlsEnabled(false);

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        //在activity执行onDestroy时执行mMapView.onDestroy(),销毁地图
        mMapView.onDestroy();
    }
    @Override
    protected void onResume() {
        super.onResume();
        //在activity执行onResume时执行mMapView.onResume (),重新绘制加载地图
        mMapView.onResume();
    }
    @Override
    protected void onPause() {
        super.onPause();
        //在activity执行onPause时执行mMapView.onPause (),暂停地图的绘制
        mMapView.onPause();
    }
    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        //在activity执行onSaveInstanceState时执行mMapView.onSaveInstanceState (outState),保存地图当前的状态
        mMapView.onSaveInstanceState(outState);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值