flutter中对接百度地图

开发环境

flutter: 3.3.4
baidu_map: 3.2.1

官方文档: Flutter插件

添加依赖

pubspec.yaml

1
2
3
4
5
dependencies:
flutter_baidu_mapapi_base: ^3.2.1
flutter_baidu_mapapi_map: ^3.2.1
flutter_baidu_mapapi_search: ^3.2.1
flutter_baidu_mapapi_utils: ^3.2.1

lib/main.dart

1
2
3
4
5
6
7
8
9
10
11
12
13
import 'package:flutter_baidu_mapapi_base/flutter_baidu_mapapi_base.dart' show BMFMapSDK, BMF_COORD_TYPE;
import 'package:flutter_baidu_mapapi_map/flutter_baidu_mapapi_map.dart';

// 同意隐私权限
BMFMapSDK.setAgreePrivacy(true);

if (Platform.isIOS) {
BMFMapSDK.setApiKeyAndCoordType('请输入百度开放平台申请的iOS端API KEY', BMF_COORD_TYPE.BD09LL);
} else if (Platform.isAndroid) {
// Android 目前不支持接口设置Apikey,
// 请在主工程的Manifest文件里设置,详细配置方法请参考[https://lbs.baidu.com/ 官网][https://lbs.baidu.com/)demo
BMFMapSDK.setCoordType(BMF_COORD_TYPE.BD09LL);
}

android/app/build.gradle

这一步是配置代码混淆,按官网文档就行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
android {
buildTypes {
release {
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
}
}

android/app/proguard-rules.pro

1
2
3
4
-keep class com.baidu.** {*;}
-keep class vi.com.** {*;}
-keep class com.baidu.vi.** {*;}
-dontwarn com.baidu.**

android/app/src/main/java/com/xx/xxx/MyApplication.java

com/xx/xxx 代表你的包名

1
2
3
4
5
6
7
8
9
10
11
package com.xx.xxx;

import com.baidu.mapapi.base.BmfMapApplication;

public class MyApplication extends BmfMapApplication {

@Override
public void onCreate() {
super.onCreate();
}
}

android/app/src/main/AndroidManifest.xml

这一步需要设置 android:name 路径为包名 + 上面创建的文件中 class 名,如果不加这个 SDK 无法初始化,地图会黑屏

1
2
3
<application android:name="com.xx.xxx.MyApplication">
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="请在此输入您在开放平台上申请的API_KEY" />
</application>