android引入高德地图

Android Studio版本 Android Studio Flamingo | 2022.2.1 Patch 2
模拟器型号 Pixel 2 API 31 1080*1920 420dpi
模拟器android版本 S Android 12.0 X86_64

生成jks获取SHA1值

keytool -genkey -v -keystore local.jks -alias local -storepass 666666 -keypass 666666 -keyalg RSA -keysize 2048 -validity 999999

keytool -list -v -keystore local.jks

获取SHA1值

第一步 获取key

1.包名为build.gradle文件android对象下的namespace属性值
2.获取高德地图kay
SHA1值和包名获取后就可以申请高德地图的key了。具体的高德地图官网写的很详细

第二步 引入依赖

1.在app目录下build.gradle加入高德地图依赖

android {
    signingConfigs {
        debug {
            storeFile file('E:\\AndroidCode\\android jks\\local.jks')
            storePassword '666666'
            keyAlias 'local'
            keyPassword '666666'
        }
        release {
            storeFile file('E:\\AndroidCode\\android jks\\local.jks')
            storePassword '666666'
            keyPassword '666666'
            keyAlias 'local'
        }
    }

    defaultConfig {
        applicationId "cn.cisbest.app"
        minSdk 28
        targetSdk 33
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

        ndk {
            //设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
            abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
        }
    }
}


dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    //3D地图so及jar
    implementation 'com.amap.api:3dmap:latest.integration'

    //定位功能 会报错Execution failed for task ':app:checkDebugDuplicateClasses'.
//    implementation 'com.amap.api:location:latest.integration'

    //搜索功能
    implementation 'com.amap.api:search:latest.integration'
}

第三步 在AndroidManifest.xml文件中配置权限和高德地图key

    <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.AndroidDemo"
        tools:targetApi="31">
        <meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="申请的key"/>
    </application>

    <!--允许程序打开网络套接字-->
    <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" />
    <!--允许程序读写手机状态和身份-->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

通过本地导入SDK使用高德地图

通过依赖引入高德地图定位功能 会报错Execution failed for task ':app:checkDebugDuplicateClasses'的错误,没有找到原因,直接下载aar包引入。下载地址,选择下载aar包的3D地图合包。
image

把下载的aar包放入libs目录下,然后在build.gradle文件下通过implementation files("libs/AMap3DMap_9.7.0_AMapSearch_9.7.0_AMapLocation_6.3.0_20230529.aar")
引入

image

踩坑1

高德官方从2021年11月23日更新了隐私合规接口
image
要在每次调用地图sdk前调用updatePrivacyShow、updatePrivacyAgree两个接口

MapView mMapView = 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.map);
    //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
    mMapView.onCreate(savedInstanceState);
}

测试Demo https://github.com/cisbest/AndroidDemo/tree/mapDemo

参考

高德地图android入门指南https://lbs.amap.com/api/android-sdk/gettingstarted,keytool,keytool,## 隐私合规接口说明https://lbs.amap.com/api/android-sdk/guide/create-project/dev-attention#t2

posted @ 2023-07-03 23:37  氵灬  阅读(205)  评论(0)    收藏  举报