All Projects → best-flutter → flutter_baidu_location

best-flutter / flutter_baidu_location

Licence: other
A flutter plugin for baidu geo location.百度地图定位flutter插件

Programming Languages

dart
5743 projects
java
68154 projects - #9 most used programming language
Objective-C++
1391 projects
ruby
36898 projects - #4 most used programming language
objective c
16641 projects - #2 most used programming language

pub package

# flutter_baidu_location

android preview

ios preview

百度地图定位flutter组件。

目前实现直接获取定位和监听定位功能。

注意:随着flutter版本的提升, 本项目也会随之更新,

如果有疑问或者对这个库感兴趣,可以加qq群:854192563一起探讨

Getting Started

集成百度地图定位android版本

1、先申请一个apikey http://lbsyun.baidu.com/apiconsole/key

2、修改 你的项目目录/app/build.gradleandroid/defaultConfig节点修改manifestPlaceholders,新增百度地图key配置

android {
    .... 你的代码

    defaultConfig {
        .....
         manifestPlaceholders = [
                BAIDU_MAP_KEY : "你的百度地图key", /// 百度地图key
        ]

    }

集成百度地图定位ios版本

1、申请一个key http://lbs.amap.com/api/ios-sdk/guide/create-project/get-key

直接在dart文件中设置key

import 'package:baidu_location/baidu_location.dart';
   
   void main(){     
       BaiduLocationClient.setApiKey("你的key");
     runApp(new MyApp());
   }

2、在info.plist中增加:

注意必须要描述清楚app使用定位的目的,苹果审核的时候要看, 如果写的不清楚,可能会被苹果拒绝上架,作者有过几次惨痛经历 :(

<key>NSLocationWhenInUseUsageDescription</key>
<string>要用定位</string>

怎么用

先导入dart包 修改pubspec.yaml,增加依赖:

dependencies:
  baidu_location: 

在要用的地方导入:

import 'package:baidu_location/baidu_location.dart';

先启动一下

 await BaiduLocationClient.startup(new AMapLocationOption( desiredAccuracy:CLLocationAccuracy.kCLLocationAccuracyHundredMeters  ));

直接获取定位:

await BaiduLocationClient.getLocation(true)

监听定位


    BaiduLocationClient.onLocationUpate.listen((AMapLocation loc){
      if(!mounted)return;
      setState(() {
         ...
      });
    });

    BaiduLocationClient.startLocation();

停止监听定位

BaiduLocationClient.stopLocation();

不要忘了在app生命周期结束的时候关闭

@override
  void dispose() {
    //注意这里关闭
    BaiduLocationClient.shutdown();
    super.dispose();
  }

注意点:

在android6以上最好手动获取定位权限

在example中以simple_permissions这个库为例:

void _checkPersmission() async{
    bool hasPermission = await SimplePermissions.checkPermission(Permission.WhenInUseLocation);
    if(!hasPermission){
      bool requestPermissionResult = await SimplePermissions.requestPermission(Permission.WhenInUseLocation);
      if(!requestPermissionResult){
        Alert.alert(context,title: "申请定位权限失败");
        return;
      }
    }
    BaiduLocationClient.onLocationUpate.listen((AMapLocation loc) {
      if (!mounted) return;
      setState(() {
        location = getLocationStr(loc);
      });
    });

    BaiduLocationClient.startLocation();
  }

特性

  • IOS
  • Android
  • 直接获取定位
  • 监听定位改变

下个版本

  • 地理围栏监听
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].