Android 高德地图 SDK 集成(一):基础地图显示

从今天开始我记录一下在 Android 应用中集成高德地图 3D SDK,兵实时位置追踪、电子围栏等功能。本文以 Java 语言开发,包名 com.example.smartpetlink


1. 准备工作

1.1 注册高德开放平台并获取 API Key

  1. 访问 高德开放平台 注册/登录。

  2. 进入控制台 → 应用管理 → 创建新应用,选择 Android 平台。

  3. 获取 API Key (例如 abc123...),后续代码中需要填入。keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android

1.2 创建 Android 项目

新建 Empty Views Activity 项目,包名 com.example.smartpetlink,最低 SDK 21,语言 Java。


2. 配置依赖与权限

2.1 添加高德地图 SDK 依赖

编辑 app/build.gradle.kts(如果使用 Groovy 则对应 build.gradle),关键配置如下:

复制代码
android {
    namespace = "com.example.smartpetlink"
    compileSdk = 33

    defaultConfig {
        applicationId = "com.example.smartpetlink"
        minSdk = 21
        targetSdk = 33
        versionCode = 1
        versionName = "1.0"

        // 指定 so 库架构,解决 native 库加载问题
        ndk {
            abiFilters.addAll(listOf("armeabi-v7a", "arm64-v8a"))
        }
    }
}

dependencies {
    implementation("com.amap.api:3dmap:10.0.600")
    // 其他基础依赖省略...
}

说明 :高德地图 3D SDK 已包含地图显示所需的所有功能,无需额外引入定位包。abiFilters 配置可确保 so 库正确打包。

2.2 添加网络权限和 API Key

AndroidManifest.xml 中声明:

复制代码
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<application ...>
    <meta-data
        android:name="com.amap.api.v2.apikey"
        android:value="你的API Key" />
</application>

3. 实现地图显示

3.1 布局文件 activity_main.xml

复制代码
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    
    <com.amap.api.maps.TextureMapView
        android:id="@+id/map_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
        
</FrameLayout>

提示 :使用 TextureMapView 可避免部分机型上的渲染黑屏问题。

3.2 Activity 核心代码 MainActivity.java

复制代码
package com.example.smartpetlink;

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import com.amap.api.maps.AMap;
import com.amap.api.maps.TextureMapView;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.MarkerOptions;

public class MainActivity extends AppCompatActivity {
    private TextureMapView mapView;
    private AMap aMap;

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

        // 隐私合规(必须最先调用)
        com.amap.api.maps.MapsInitializer.updatePrivacyShow(this, true, true);
        com.amap.api.maps.MapsInitializer.updatePrivacyAgree(this, true);

        mapView = findViewById(R.id.map_view);
        mapView.onCreate(savedInstanceState);

        aMap = mapView.getMap();
        aMap.setMapType(AMap.MAP_TYPE_NORMAL);

        // 添加一个测试标记
        LatLng beijing = new LatLng(39.904989, 116.405285);
        aMap.addMarker(new MarkerOptions().position(beijing).title("天安门"));
        aMap.moveCamera(com.amap.api.maps.CameraUpdateFactory.newLatLngZoom(beijing, 12));
    }

    // 生命周期管理
    @Override protected void onResume() { super.onResume(); mapView.onResume(); }
    @Override protected void onPause() { super.onPause(); mapView.onPause(); }
    @Override protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); }
    @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); }
}

4. 常见问题与解决

4.1 地图黑屏但左下角有"高德地图"字样

  • 原因:so 库未正确加载或 CPU 架构不匹配。

  • 解决:在 build.gradle 中配置 abiFilters(如上述),并确保使用 TextureMapView

4.2 UnsatisfiedLinkError: No implementation found

  • 原因:so 库未打包进 APK。

  • 解决:检查 abiFilters 配置,Clean 并 Rebuild 项目。

4.3 地图显示空白或网格

  • 原因:网络问题或 API Key 无效。

  • 解决:确认网络畅通,Key 已启用地图服务,并检查 AndroidManifest.xml 中 Key 的配置。


5. 结语

至此,你已经成功在应用中集成了高德地图,并看到地图显示。下一步我们将实现从云平台获取宠物实时位置并在地图上标记,敬请期待后续教程。

6. 结果展示

相关推荐
我命由我123452 分钟前
Android 开发问题:项目同时引入了两个包含相同类文件的库(AndroidX 库、旧版本支持库),导致了重复类错误
android·java·java-ee·android studio·android-studio·androidx·android runtime
anthonyzhu8 分钟前
安卓Android studio panda run无法应用更新的问题
android·ide·android studio
jingling5551 小时前
Flutter | Dio网络请求实战
android·开发语言·前端·flutter
帅次2 小时前
讯飞与腾讯云:Android 实时语音识别服务对比选择
android·ios·微信小程序·小程序·android studio·android runtime
jiayong233 小时前
MySQL 排序规则冲突问题与 utf8mb4_general_ci 统一方案
android·mysql·ci/cd
随遇丿而安3 小时前
第6周:RecyclerView 真正难的不是“写个列表”,而是让列表在复用中保持正确
android
晓梦林4 小时前
EVA靶场学习笔记
android·笔记·学习
私人珍藏库4 小时前
【Android】抖音无水印下载安卓端 轻载 QingZai v1.0.4
android·app·工具·软件·多功能
qq3621967055 小时前
Twitter官网下载安装指南:2026最新安卓版APK教程
android·twitter
盼小辉丶5 小时前
PyTorch深度学习实战(55)——在Android上部署PyTorch模型
android·pytorch·python·模型部署