bmap_flutter 0.0.1+1 copy "bmap_flutter: ^0.0.1+1" to clipboard
bmap_flutter: ^0.0.1+1 copied to clipboard

PlatformAndroidiOS
unlisted

baidu map plugin

bmap_flutter #

百度地图flutter插件,插件包含了位置选择以及同屏功能

Getting Started #

添加插件到项目 #

bmap_flutter: x.x.x

选择位置 #

final PoiModel res = await BmapFlutter.pickLocation(context: context, iosAk: "ak");

项目配置 #

Android

  1. AndroidManifest.xml中加入以下权限
<!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,POI检索等 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<!-- 这个权限用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 这个权限用于访问GPS定位--> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  1. AndroidManifest.xml中加入百度地图ak,在application标签内添加meta
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="ak" />
  1. 开启混淆

    • 添加proguard-rules.pro文件到android/app目录
    #=== Flutter Wrapper ===#
    -keep class io.flutter.app.** { *; }
    -keep class io.flutter.plugin.**  { *; }
    -keep class io.flutter.util.**  { *; }
    -keep class io.flutter.view.**  { *; }
    -keep class io.flutter.**  { *; }
    -keep class io.flutter.plugins.**  { *; }
    
    #=== 百度地图 ===#
    -keep class com.baidu.** {*;}
    -keep class vi.com.** {*;}
    -keep class com.baidu.vi.** {*;}
    -dontwarn com.baidu.**
    
    • 配置混淆,文件android/app/build.gradle, android->buildTypes->release添加如下代码
    android {
        ...
        buildTypes {
            release {
                ...
                minifyEnabled true
                shrinkResources true
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    
  2. 关于https参考百度地图文档

IOS

  1. 权限请求使用了permission_handler ios需要在Podfile中做相关配置,这里仅做示例,详细请查看permission_handler 文档

    post_install do |installer|
       installer.pods_project.targets.each do |target|
          flutter_additional_ios_build_settings(target)
       end
    
       # 添加的内容  
       installer.pods_project.targets.each do |target|
          target.build_configurations.each do |config|
             config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
                '$(inherited)',
                'PERMISSION_LOCATION=1',
             ]
    
       end
      end
    end
    
  2. plist.info中添加权限描述

      <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
        <string>获取当前位置</string>
        <key>NSLocationAlwaysUsageDescription</key>
        <string>获取当前位置</string>
        <key>NSLocationWhenInUseUsageDescription</key>
        <string>获取当前位置</string>
    
  3. plist.info中的Bundle display name不能为空

  4. 提交到AppStore注意事项

  5. 注释Podfile中的use_frameworks

    target 'Runner' do
    #  use_frameworks!   
    use_modular_headers!
    
    flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
    end