bmap_flutter 0.0.1+1 bmap_flutter: ^0.0.1+1 copied to clipboard
baidu map plugin
bmap_flutter #
百度地图flutter插件,插件包含了位置选择以及同屏功能
Getting Started #
添加插件到项目 #
bmap_flutter: x.x.x
选择位置 #
final PoiModel res = await BmapFlutter.pickLocation(context: context, iosAk: "ak");
项目配置 #
Android
- 在
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" />
- 在
AndroidManifest.xml
中加入百度地图ak,在application
标签内添加meta
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="ak" />
-
开启混淆
- 添加
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' } }
- 添加
-
关于
https
参考百度地图文档
IOS
-
权限请求使用了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
-
在
plist.info
中添加权限描述<key>NSLocationAlwaysAndWhenInUseUsageDescription</key> <string>获取当前位置</string> <key>NSLocationAlwaysUsageDescription</key> <string>获取当前位置</string> <key>NSLocationWhenInUseUsageDescription</key> <string>获取当前位置</string>
-
plist.info
中的Bundle display name
不能为空 -
注释
Podfile
中的use_frameworks
target 'Runner' do # use_frameworks! use_modular_headers! flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) end