flutter amap_base_flutter地图插件

amap_base_flutter的集成使用

 

错误:org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments.setAddCompilerBuiltIns(Z)V

   解决问题:1,修改插件版本,影响的均要修改,2,gradle版本修改,统一版本,或者删除gradle重新生成

 

amap_base_flutter包含的功能更多,不仅仅是定位,还集成了简单的地图展示、导航、搜索等功能,使用上和上个库也差不多,github上还有相关的demo: https://github.com/OpenFlutter/amap_base_flutter/tree/master/map。

一、申请APIkey

APIkey的申请同上,申请过的话就直接用已经有的key。

二、添加依赖

添加依赖和flutter_amap_location差不多,在Android和iOS分别设置APPkey,需要权限的话,分别在配置文件中添加。
添加dependencies

  amap_base: ^0.2.12

导入包

  import 'package:amap_base/amap_base.dart';

Android配置
在AndroidManifest.xml中设置appkey,注意设置在application节点下


    ...
    

iOS配置同上,在程序的主入口 main.dart

void main() {
  AMap.init('您的Key');
  runApp(new MyApp());
}

另外显示地图的话需要另外设置,iOS端的UiKitView目前还只是preview状态, 默认是不支持的, 需要手动打开开关, 在info.plist文件中新增一行io.flutter.embedded_views_preview为true.

三、代码调用

核心代码

  final _amapLocation = AMapLocation();
  var _result = '';

  //初始化定位监听
  void _initLocation() async {
    _amapLocation.init();

    final options = LocationClientOptions(
      isOnceLocation: false,
      locatingWithReGeocode: true,
    );

    if (await Permissions().requestPermission()) {
      _amapLocation.startLocate(options).listen((_) => setState(() {
            _result =
                '坐标:${_.longitude},${_.latitude} @ ${DateTime.now().hour}:${DateTime.now().minute}:${DateTime.now().second}';
          }));
    } else {
      setState(() {
        _result = "无定位权限";
      });
    }
  }

比上个库好的是它自带了一个权限检测的方法。

四、关闭定位

最后在dispose中关闭定位,防止内存泄漏

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

 

 

 

你可能感兴趣的:(flutter amap_base_flutter地图插件)