本文档介绍如何将 flutter_tencent_map 插件集成到你的 Flutter 项目中,包括添加依赖、获取 API Key、以及 Android/iOS 平台配置。
HarmonyOS 的集成步骤略有不同,下文「HarmonyOS 配置」给出概要,完整说明请参考 HarmonyOS 专项指南。
在项目的 pubspec.yaml 中添加依赖:
dependencies:
flutter_tencent_map: ^1.0.0
然后执行:
flutter pub get
HarmonyOS:鸿蒙专项版需使用 flutter-ohos,并精确锁定版本
flutter_tencent_map: 1.0.1-ohos.1(不能写^),详见 HarmonyOS 专项指南。
注意:Android 和 iOS 需要分别创建 Key,或使用同一个 Key 但分别配置平台信息。HarmonyOS 需要单独创建 HarmonyOS 平台的 Key,并绑定应用的 Bundle Name 与签名指纹。
在 android/app/src/main/AndroidManifest.xml 的 <application> 标签内添加:
<meta-data
android:name="TencentMapSDK"
android:value="YOUR_ANDROID_API_KEY" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
在 android/app/build.gradle 中确认:
android {
compileSdkVersion 31
defaultConfig {
minSdkVersion 21
targetSdkVersion 31
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
注意:插件使用 Java 实现(不依赖 Kotlin),如果你的项目启用了 Kotlin,无需额外配置。
插件的 podspec 已自动配置腾讯地图 iOS SDK 依赖,正常执行 pod install 即可:
cd ios && pod install
注意:如果遇到 SDK 版本冲突,请在 Podfile 中锁定版本:
pod 'QMapKit', '5.7.7'(低版本)或pod 'QMapKit', '6.9.0'(高版本)。
仅适用于鸿蒙专项版,需使用 flutter-ohos。以下为概要,完整步骤与常见问题见 HarmonyOS 专项指南。
dependencies:
flutter_tencent_map: 1.0.1-ohos.1 # 不能写 ^1.0.1-ohos.1
在 ohos/entry/src/main/module.json5 的 requestPermissions 中添加:
"requestPermissions": [
{ "name": "ohos.permission.INTERNET" }
]
如需通过
updateMyLocation推送设备位置,还需声明并动态申请位置权限,插件本身不申请位置权限。
在 ohos/build-profile.json5 的 products 下添加:
"buildOption": {
"strictMode": {
"useNormalizedOHMUrl": true
}
}
鸿蒙工程必须配置签名三件套,推荐在 DevEco Studio 中通过 File → Project Structure → Signing Configs 自动生成。
await TencentMapInitializer.setAgreePrivacy(true);
await TencentMapInitializer.setApiKey(const TencentMapApiKey(
ohosKey: 'YOUR_OHOS_KEY',
));
await TencentMapInitializer.start();
setApiKey必须在创建任何地图 Widget 之前调用。
插件支持两种 API Key 配置方式,任选其一:
AndroidManifest.xml 中的 <meta-data android:name="TencentMapSDK" android:value="YOUR_KEY"/>TencentMapInitializer.setApiKey 设置(见上文「HarmonyOS 配置」)此方式下,Android SDK 会自动从 AndroidManifest 读取 Key,Dart 层的 TencentMap Widget 无需传 apiKey 参数。
TencentMap(
apiKey: TencentMapApiKey(
androidKey: 'YOUR_ANDROID_KEY',
iosKey: 'YOUR_IOS_KEY',
),
...
)
此方式适合多地图实例使用不同 Key 的场景。
注意:iOS 当前版本不支持多地图实例使用不同的 Key(同一 App 内所有地图实例共享同一个 Key)。后续版本会支持。Android 端已支持。HarmonyOS 的鉴权为全局单例,同一应用内所有地图实例共用同一个
ohosKey,TencentMap(apiKey:)中的ohosKey不会生效。
运行项目,如果地图正常渲染出北京天安门附近的地图瓦片,说明集成成功:
flutter run
HarmonyOS 请使用 flutter-ohos:
flutter-ohos run,或flutter-ohos build hap --debug构建 HAP 后安装。
如果地图中心显示"鉴权失败,请检查你的 Key"文字,请检查 Key 是否正确、包名/Bundle ID 是否与控制台一致。
有帮助
没帮助