amap_map_fluttify 0.4.0+d62f0ad copy "amap_map_fluttify: ^0.4.0+d62f0ad" to clipboard
amap_map_fluttify: ^0.4.0+d62f0ad copied to clipboard

outdated

An `Amap` map component, based on `fluttify` engine.

Logo

高德 地图组件 #

pub package

Dart接口基于fluttify引擎生成. dartdoc接口文档.

由于高德地图的iOS端的二进制文件MAMapKit128.1MB, 超出了GitHub上传文件限制的大小(100MB), 而GitHub免费版的git-lfs限额流量(1G)已经用完, 所以git clone的时候会失败, 就算直接下载repo, MAMapKit也已经转换成了git-lfs的一个指针文件, 无法使用.

这里提供一个变通方法, 随便在一个flutter工程内依赖amap_map_fluttify, 然后flutter packages get下载flutter插件后, 去flutter的pub缓存文件夹$flutter_root/.pub-cache/hosted/pub.dartlang.org/($flutter_root是你的flutter安装文件夹)下找到amap_map_fluttify的包, 这是一个完整的插件工程, 里面含有example工程, 可以正常运行.

如果想要查看样例工程的话, 就运行这个example工程.

安装:

dependencies:
  flutter:
    sdk: flutter
  amap_map_fluttify: ^x.x.x

导入:

import 'package:amap_map_fluttify/amap_map_fluttify.dart';

使用:

/// !注意: 只要是返回Future的方法, 一律使用`await`修饰, 确保当前方法执行完成后再执行下一行, 在不能使用`await`修饰的环境下, 在`then`方法中执行下一步.
/// 初始化 iOS在init方法中设置, android需要去AndroidManifest.xml里去设置, 详见 https://lbs.amap.com/api/android-sdk/gettingstarted
/// 和其他fluttify高德插件不一样的是, 这里需要使用`AmapService`去初始化, `AmapService`内部调用的依然是`AmapCore`, 只不过地图插件在初始化的会话需要做些其他事.
AmapService.init('7a04506d15fdb7585707f7091d715ef4');

class AmapWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return AmapView(
      // 是否显示室内地图
      showIndoorMap: true,
      // 地图类型
      mapType: MapType.Standard,
      // 地图语言
      language: Language.Chinese,
      // 是否显示交通情况
      showTraffic: true,
      // 是否显示缩放控件
      showZoomControl: true,
      // 是否显示指南针控件
      showCompass: true,
      // 是否显示定位控件
      showLocateControl: true,
      // 是否显示比例尺控件
      showScaleControl: true,
      // 是否使能缩放手势
      zoomGesturesEnabled: true,
      // 是否使能滚动手势
      scrollGesturesEnabled: true,
      // 是否使能旋转手势
      rotateGestureEnabled: true,
      // 是否使能倾斜手势
      tiltGestureEnabled: true,
      // 是否使能所有手势
      allGesturesEnabled: true,
      // 缩放级别
      zoomLevel: 10, 
      // 中心点坐标
      centerCoordinate: LatLng(39, 120),
      // 标记
      markers: <MarkerOptions>[], 
      // 标识点击回调
      onMarkerClick: (Marker marker) {},
      // 地图点击回调
      onMapClick: (LatLng coord) {},
      // 地图拖动回调
      onMapDrag: (MapDrag drag) {},
      // 地图创建完成回调
      onMapCreated: (controller) async {
        if (await requestPermission()) {
          await controller.showMyLocation(true);
        }
      },
    );
  }
}

FAQ #

  • 这个项目跟amap_base有什么联系和区别?
    • 联系: 除了是同一个作者开发的之外没有联系;
    • 区别: amap_base使用的是常规的开发方式, 还是以MethodChannel为中心在dart和原生以及各个原生平台之间斡旋. 而fluttify系列插件是在fluttify引擎生成的dart接口之上去开发插件, 屏蔽了原生代码, 开发插件时不再需要在不同的原生代码之间斡旋, 只需要专注于整合不同平台的api即可.

请作者喝杯奶茶 #

qq群 #

LICENSE #

Copyright 2019 yohom

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.