我的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"

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

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐