高德地图 Key 申请和配置指南

6 阅读6分钟

高德地图 Key 申请和配置指南

目录

  1. Key 类型说明
  2. 申请流程
  3. 代码配置
  4. 当前项目配置
  5. 常见问题
  6. 验证测试

平台地址


Key 类型说明

高德地图提供多种类型的 Key,用于不同的场景:

1. SDK Key(原生 App)

  • 用途: 用于 Android/iOS 原生 App 的地图 SDK
  • 功能: 地图组件、定位 SDK、地图显示等
  • 配置位置: manifest.json

2. Web 服务 Key

  • 用途: 用于调用 HTTP API(逆地理编码、地理编码、搜索等)
  • 功能: 地址解析、地理编码、POI 搜索等
  • 配置位置: 代码中直接使用

3. Web 端 Key

  • 用途: 用于 H5 网页端地图服务
  • 功能: H5 地图显示、定位等
  • 配置位置: H5 页面配置

申请流程

步骤一:登录高德开放平台

  1. 访问:console.amap.com/
  2. 使用账号登录(验证码登录或密码登录)

步骤二:创建应用和 Key

2.1 创建 SDK Key(Android/iOS)
  1. 进入应用管理

    • 点击左侧菜单 应用管理
    • 点击 创建新应用
  2. 填写应用信息

    • 应用名称: 。。。
    • 应用类型: 选择 移动应用
  3. 添加 Android Key

    • 点击 添加 Key
    • Key名称: bdsh(或自定义)
    • 服务平台: 勾选 Android平台
    • PackageName: 自己填
    • SHA1: 自己填
    • 点击 提交
  4. 添加 iOS Key

    • 点击 添加 Key
    • Key名称: bdsh(或自定义)
    • 服务平台: 勾选 iOS平台
    • Bundle ID: 自己填
    • 点击 提交
2.2 创建 Web 服务 Key
  1. 创建新应用

    • 应用管理 → 创建新应用
    • 应用名称: 。。-Web服务
    • 应用类型: 选择 Web服务
  2. 添加 Web 服务 Key

    • 点击 添加 Key
    • Key名称: web_service_key(自定义)
    • 服务平台: 只勾选 Web服务
    • IP白名单:
      • 开发环境:可以不设置或设置为 0.0.0.0/0(允许所有 IP)
      • 生产环境:设置服务器 IP
    • 点击 提交
  3. 复制 Key

    • 创建成功后,复制生成的 Key
2.3 创建 Web 端 Key(可选)

如果需要 H5 端地图功能:

  1. 创建新应用

    • 应用管理 → 创建新应用
    • 应用名称: 洛。。-Web端
    • 应用类型: 选择 **Web端(JS API)`
  2. 添加 Web 端 Key

    • 点击 添加 Key
    • Key名称: web_js_key(自定义)
    • 服务平台: 勾选 Web端(JS API)
    • 安全密钥: 系统会自动生成,请保存
    • 点击 提交

代码配置

1. SDK Key 配置(manifest.json)

文件位置:manifest.json

{
  "app-plus": {
    "modules": {
      "Maps": {
        "provider": "amap"
      }
    },
    "distribute": {
      "sdkConfigs": {
        "amap": {
          "android": {
            "key": "申请的key"
          },
          "ios": {
            "key": "申请的key"
          }
        }
      }
    }
  }
}

2. Web 服务 Key 配置(代码中)

getAddressByLocation 函数中:

function getAddressByLocation(longitude, latitude) {
  // 使用高德地图 Web 服务 Key(专门用于 HTTP API 调用)
  const regeoKey = '申请的key'
  
  uni.request({
    url: 'https://restapi.amap.com/v3/geocode/regeo',
    method: 'GET',
    data: {
      key: regeoKey,
      location: `${longitude},${latitude}`,
      radius: 1000,
      extensions: 'base'
    },
    // ...
  })
}

3. Android 权限配置(manifest.json)

{
  "app-plus": {
    "distribute": {
      "android": {
        "permissions": [
          "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
          "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
          "<uses-permission android:name=\"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS\"/>"
        ]
      }
    }
  }
}

4. iOS 权限配置(manifest.json)

{
  "app-plus": {
    "distribute": {
      "ios": {
        "privacyDescription": {
          "NSLocationWhenInUseUsageDescription": "需要使用您的位置信息以提供地图定位服务",
          "NSLocationAlwaysUsageDescription": "需要使用您的位置信息以提供地图定位服务",
          "NSLocationAlwaysAndWhenInUseUsageDescription": "需要使用您的位置信息以提供地图定位服务"
        }
      }
    }
  }
}

常见问题

1. USERKEY_PLAT_NOMATCH 错误

问题: 调用 Web API 时出现平台不匹配错误

原因:

  • SDK Key 和 Web 服务 Key 不能混用
  • SDK Key 主要用于原生地图组件,不能用于 HTTP API

解决方案:

  1. 创建专门的 Web 服务 Key(推荐)
  2. 确保 Web 服务 Key 的平台类型正确设置为 "Web服务"
  3. 更新代码中的 regeoKey 为 Web 服务 Key

2. 定位失败:地图提供商未配置

问题: getLocation:fail translate coordinate system faild, map provider not configured

原因: 开发环境未配置地图服务提供商

解决方案:

  1. 确保 manifest.json 中配置了 Maps 模块和 provider: "amap"
  2. 代码已自动降级到 wgs84 坐标系
  3. 正式打包后会自动使用 gcj02 坐标系

3. SHA1 如何获取

使用 HBuilderX(推荐)

  1. HBuilderX → 发行 → 原生 App-云打包
  2. 选择 Android 平台
  3. 创建/选择证书
  4. 自动显示 SHA1 值

4. Key 配置不生效

可能原因:

  • 配置修改后需要等待 5-10 分钟生效
  • Key 的平台类型配置错误
  • IP 白名单限制

解决方案:

  1. 等待配置生效(5-10 分钟)
  2. 检查 Key 的平台类型是否正确
  3. 检查 IP 白名单设置
  4. 重新打包应用(manifest.json 修改需要重新打包)

5. 定位权限被拒绝

问题: 应用无法获取定位权限

解决方案:

  1. 检查 manifest.json 中的权限配置
  2. 检查 iOS 的 privacyDescription 配置
  3. 引导用户到系统设置中开启定位权限
  4. 代码中已添加权限请求逻辑

验证测试

1. SDK Key 验证

  1. 打包应用

    • HBuilderX → 发行 → 原生 App-云打包
    • 选择 Android/iOS 平台
    • 使用配置的证书打包
  2. 测试地图功能

    • 安装打包后的应用
    • 测试地图显示是否正常
    • 测试定位功能是否正常

2. Web 服务 Key 验证

  1. 测试逆地理编码

    • 运行应用
    • 触发定位功能
    • 检查控制台是否有错误
    • 确认地址解析正常
  2. 检查错误日志

    • 打开浏览器/开发者工具控制台
    • 查看是否有 USERKEY_PLAT_NOMATCH 错误
    • 确认 API 调用成功

3. 完整功能测试

  1. 定位功能

    • 获取当前位置
    • 显示定位地址
    • 点击重新定位
  2. 地址解析

    • 经纬度转换为地址
    • 显示完整地址
    • 缓存地址信息
  3. 错误处理

    • 权限被拒绝时的提示
    • 网络异常时的降级
    • 使用缓存地址

配置检查清单

SDK Key 配置

  • manifest.json 中配置了 Maps 模块
  • provider 设置为 "amap"
  • Android Key 已配置
  • iOS Key 已配置
  • PackageName/Bundle ID 正确
  • Android SHA1 已配置

Web 服务 Key 配置

  • 创建了 Web 服务类型的 Key
  • 代码中使用了 Web 服务 Key
  • Key 的平台类型正确

权限配置

  • Android 位置权限已添加
  • iOS 位置权限说明已配置
  • 权限请求逻辑已实现

测试验证

  • 定位功能正常
  • 地址解析正常
  • 无错误日志
  • 错误处理正常

注意事项

  1. Key 安全

    • 不要将 Key 提交到公开代码仓库
    • 生产环境建议设置 IP 白名单
    • 定期检查 Key 的使用情况
  2. 配置生效时间

    • 新创建的 Key 立即生效
    • 修改配置后需要等待 5-10 分钟
    • manifest.json 修改需要重新打包
  3. Key 类型不能混用

    • SDK Key 用于原生地图组件
    • Web 服务 Key 用于 HTTP API
    • 不同类型的 Key 需要分开创建
  4. 开发环境 vs 生产环境

    • 开发环境可以使用降级方案(wgs84)
    • 生产环境需要正确配置所有 Key
    • 建议使用不同的 Key 区分环境

如有问题,请参考: