欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

flutter 3.10.x 集成百度地图 SDK(包括定位功能)

最编程 2024-07-05 12:00:59
...

步骤如下:

andriod

  1. 在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"
    }
}
  1. 在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'
    }
  1. 在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" />
  1. 在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

  1. 在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
  1. 在ios目录下执行
    pod install
  1. 在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);
    }

完成以上步骤,集成百度地图。

推荐阅读