步骤如下:
andriod
- 在android/build.gradle添加如下代码:
classpath "com.baidu.lbsyun:base:7.5.5@aar"
完整代码如下:
buildscript {
ext.kotlin_version = '1.7.10'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.3.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "com.baidu.lbsyun:base:7.5.5@aar"
}
}
- 在android/app/build.gradle中添加如下代码:
implementation 'com.baidu.lbsyun:BaiduMapSDK_Map:7.5.5'
implementation 'com.baidu.lbsyun:BaiduMapSDK_Search:7.5.5'
implementation 'com.baidu.lbsyun:BaiduMapSDK_Util:7.5.5'
implementation 'com.baidu.lbsyun:BaiduMapSDK_Location_All:9.4.0'
完整代码如下:
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.baidu.lbsyun:BaiduMapSDK_Map:7.5.5'
implementation 'com.baidu.lbsyun:BaiduMapSDK_Search:7.5.5'
implementation 'com.baidu.lbsyun:BaiduMapSDK_Util:7.5.5'
implementation 'com.baidu.lbsyun:BaiduMapSDK_Location_All:9.4.0'
}
- 在android/app/src/main/AndroidManifest.xml中添加
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 写外置存储。如果开发者使用了离线地图,并且数据写在外置存储区域,则需要申请该权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 读取外置存储。如果开发者使用了so动态加载功能并且把so文件放在了外置存储区域,则需要申请该权限,否则不需要 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,POI检索等 -->
<uses-permission android:name="android.permission.INTERNET" />
以及
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="百度开发者平台申请的安卓应用key" />
- 在android/app/src/main/kotlin/com/example/包名/MainActivity.kt添加如下代码:
SDKInitializer.setAgreePrivacy(applicationContext, true)
SDKInitializer.initialize(applicationContext)
完整代码如下:
import com.baidu.mapapi.SDKInitializer
class MainActivity: FlutterActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
SDKInitializer.setAgreePrivacy(applicationContext, true)
SDKInitializer.initialize(applicationContext)
}
}
ios
- 在ios/Podfile中添加如下代码:
pod 'BMKLocationKit'
pod 'BaiduMapKit', '6.5.5' # 默认集成全量包
完整代码如下:
target 'Runner' do
use_frameworks!
use_modular_headers!
pod 'BMKLocationKit'
pod 'BaiduMapKit', '6.5.5' # 默认集成全量包
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
target 'RunnerTests' do
inherit! :search_paths
end
end
- 在ios目录下执行
pod install
- 在ios/Runner/Info.plist中添加如下配置
<key>NSLocationWhenInUseUsageDescription</key>
<string>开启定位以便获取您的位置</string>
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>baidumap</string>
</array>
其中UIBackgroundModes
用于连续定位,LSApplicationQueriesSchemes
用于跳转到百度地图app。
配置flutter依赖
为何指定3.3.1
版本,因为之后的版本不再支持安卓模拟器。
dependencies:
flutter_baidu_mapapi_base: 3.3.1
flutter_baidu_mapapi_map: 3.3.1
flutter_baidu_mapapi_utils: 3.3.1
flutter_baidu_mapapi_search: 3.3.1
flutter_bmflocation: 3.3.1
main.dart中配置初始化
// 百度地图sdk初始化鉴权
if (Platform.isIOS) {
myLocPlugin.authAK('百度开发者平台申请得到的ios应用key');
BMFMapSDK.setApiKeyAndCoordType(
'百度开发者平台申请得到的ios应用key', BMF_COORD_TYPE.BD09LL);
} else if (Platform.isAndroid) {
/// 初始化获取Android 系统版本号,如果低于10使用TextureMapView 等于大于10使用Mapview
await BMFAndroidVersion.initAndroidVersion();
// Android 目前不支持接口设置Apikey,
// 请在主工程的Manifest文件里设置,详细配置方法请参考官网(https://lbsyun.baidu.com/)demo
BMFMapSDK.setCoordType(BMF_COORD_TYPE.BD09LL);
}