flutter 项目接入百度地图
java下面创建的文件夹名字对应你项目的包名,这个项目的包名是com.baidu.flutter_bmfmap_example然后在flutter_bmfmap_example文件夹下创建一个。//包名改成你自己的。然后重新启动地图就出来了!,对了模拟器上会闪退!1.引入插件(我引入最新版3.9.0有问题,我就降了)// 在使用地图前检查初始化状态。/// 地图加载回调。/// 设置地图参数。//
我的flutter sdk版本是3.19.4
1.引入插件(我引入最新版3.9.0有问题,我就降了)
flutter_baidu_mapapi_map: ^3.8.1
flutter_baidu_mapapi_base: ^3.8.1
permission_handler: ^11.3.1
flutter_bmflocation: ^3.6.0 #百度地图api

2.引入之后启动项目
build.gradle 里的minSdkVersion最低要为22
compileSdkVersion 要改成35 这个可改可不改,我改了以后各种问题,又去下载最新的安卓35,弄了好久都不行,放弃了
3.业务代码这块引入这几个包
import 'package:flutter_bmflocation/flutter_bmflocation.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:flutter_baidu_mapapi_base/flutter_baidu_mapapi_base.dart'
show BMFCoordinate, BMFEdgeInsets, BMFMapSDK, BMF_COORD_TYPE;
import 'package:flutter_baidu_mapapi_map/flutter_baidu_mapapi_map.dart';

初始化里同意协议
// 在使用地图前检查初始化状态
BMFMapSDK.setAgreePrivacy(true);
_myLocPlugin.setAgreePrivacy(true);

Container(
height: Get.height,
width: Get.width,
child: BMFMapWidget(
onBMFMapCreated: (controller) {
onBMFMapCreated(controller);
},
mapOptions: mapOptions,
),

/// 设置地图参数
BMFMapOptions mapOptions = BMFMapOptions(
center: BMFCoordinate(39.917215, 116.380341),
zoomLevel: 12,
mapPadding: BMFEdgeInsets(left: 30, top: 0, right: 30, bottom: 0));
/// 创建完成回调
void onBMFMapCreated(BMFMapController controller) {
_myMapController = controller;
/// 地图加载回调
_myMapController.setMapDidLoadCallback(callback: () {
print('mapDidLoad-地图加载完成');
});
}

4.最坑人的一点来了!!!还需要去创建一个java类MyApplication.java初始化 不然一直都不行
在你项目的android /src/main/java里去创建

java下面创建的文件夹名字对应你项目的包名,这个项目的包名是com.baidu.flutter_bmfmap_example然后在flutter_bmfmap_example文件夹下创建一个MyApplication.java

MyApplication.java里初始化代码如下
package com.baidu.flutter_bmfmap_example;//包名改成你自己的
import com.baidu.mapapi.base.BmfMapApplication;
//import android.app.Application;
//import android.content.Context;
//import com.baidu.mapapi.CoordType;
//import com.baidu.mapapi.SDKInitializer;
//import com.baidu.mapapi.common.BaiduMapSDKException;
//import com.baidu.mapapi.map.OverlayUtil;
public class MyApplication extends BmfMapApplication {
@Override
public void onCreate() {
super.onCreate();
}
}

然后再去AndroidManifest.xml里定义你的类注意是.MyApplication
android:name=".MyApplication"

然后重新启动地图就出来了!,对了模拟器上会闪退!!!有人解决了这个问题麻烦告诉我一下
更多推荐



所有评论(0)