amap_base 0.1.10

  • README.md
  • CHANGELOG.md
  • Example
  • Installing
  • Versions
  • new68

高德地图Flutter插件 基于AndroidView和UiKitView

pub package

[TOC]

安装

在你的pubspec.yaml文件的dependencies节点下添加:

amap_base: x.x.x

如果你想要指定某个版本/分支/提交, 那么:

amap_base:
  git:
    url: https://github.com/yohom/amap_base_Flutter.git
    ref: 0.0.1/branch/commit

导入:

import 'package:amap_base/amap_base.dart';

Android端设置key:

<application>
    ...
    <meta-data
        android:name="com.amap.api.v2.apikey"
        android:value="您的Key"/>
</application>

iOS端设置key:

await AMap.init('您的key'); // 这个方法在Android端无效

iOS端的UiKitView目前还只是preview状态, 默认是不支持的, 需要手动打开开关, 在info.plist文件中新增一行io.flutter.embedded_views_previewtrue. 参考iOS view embedding support has landed on master

关于高德的Android SDK和iOS SDK

  • 由于Android和iOS端的实现完全不一样, Android端照抄了Google Map的api设计, 而iOS 端又没有去抄Google Map的设计, 导致需要额外的工作去兼容两个平台的功能. 这个库的目标是尽可能的统一双端的api设置, 采用取各自平台api的并集, 然后在文档中指出针对哪个平台有效的策略来实现api统一.

关于包的大小

  • 目前主分支的计划是实现全功能的高德地图, 然后开单独的分支实现高德的单独的功能, 这样包会小一点.
  • 这个库依赖了高德导航库(包含了3dMap库), 以及搜索库.

关于Swift项目

  • Swift项目需要注释掉Podfile中的use_framework!. 尝试了在podspec中添加s.static_framework = true, 但是会造成找不到pod里的头文件. 如果有更好的解决方案, 请告知我.

关于项目结构

项目结构按照高德官方网站的开发指南组织. 分为地图, 定位, 导航三大块.

|-- me.yohom.amapbase
    |-- `AMapBasePlugin`: Flutter插件类
    |-- `FunctionRegistry`: 功能登记处, 所有功能都需要在此处注册.
    |-- `IMapMethodHandler`: **处理委托对象**接口.
    |-- common: 通用代码
    |-- map: 地图功能模块
        |-- handlers: 单个功能的**处理委托对象**
            |-- calculatetool: `地图计算工具`
            |-- createmap: `创建地图`
            |-- draw: `在地图上绘制`
            |-- interact: `与地图交互`
        |-- model: 地图数据的模型
        |-- `AMapFactory`: AMapView工厂, Flutter的platform view需要
    |-- navi: 导航功能模块(未实现)
    |-- search: 搜索功能模块
        |-- handlers: 单个功能的**处理委托对象**
            |-- fetchdata: `获取地图数据`
            |-- routeplan: `出行路线规划`
        |-- model: 搜索数据的模型
    |-- location: 定位功能模块(未实现)

关于贡献代码

  1. handlers包下找到要实现的功能模块包, 比如说要实现显示地图, 那么先找到me.yohom.amapbase/map/handlers/createmap包, 然后在该包下创建新的实现MapMethodHandler接口的委托类.
  2. 实现功能后, 在FunctionRegistry类中注册功能.
  3. 在dart增加对应的方法.
  4. 新功能的开发就完成了.

FAQ:

  1. 为什么定位到非洲去了?
  • 实际上是定位在了经纬度(0, 0)的位置了, 那个位置大致在非洲西部的几内亚湾, 原因是key 设置错了, 建议检查一下key的设置.
  1. 为什么Android端用Flutter运行后奔溃, 但是直接用Android SDK运行成功?
  • 指定项目的编译选项Additional arguments增加--target-platform android-arm.从screen shot 2018-12-06 at 09 36 20这里打开选项对话框.

TODO LIST:

  • [ ] 创建地图
    • [x] 显示地图
    • [x] 显示定位蓝点
    • [x] 显示室内地图
    • [x] 切换地图图层
    • [x] 使用离线地图
    • [x] 显示英文地图
    • [ ] 自定义地图
  • [ ] 与地图交互
    • [x] 控件交互
    • [x] 手势交互
    • [x] 调用方法交互
    • [ ] 地图截屏功能
  • [ ] 在地图上绘制
    • [x] 绘制点标记
    • [x] 绘制折线
    • [ ] 绘制面
    • [ ] 轨迹纠偏
    • [ ] 点平滑移动
    • [ ] 绘制海量点图层
  • [ ] 获取地图数据
    • [x] 获取POI数据
    • [ ] 获取地址描述数据
    • [ ] 获取行政区划数据
    • [ ] 获取公交数据
    • [ ] 获取天气数据
    • [ ] 获取业务数据(云图功能)
    • [ ] 获取交通态势信息
  • [ ] 出行线路规划
    • [x] 驾车出行路线规划
    • [ ] 步行出行路线规划
    • [ ] 公交出行路线规划
    • [ ] 骑行出行路线规划
    • [ ] 货车出行路线规划
  • [ ] 地图计算工具
    • [x] 坐标转换
    • [ ] 距离/面积计算
    • [ ] 距离测量

0.1.10

  • 增加ChangeLatLng方法, 用来把目标位置移动到地图中心

0.1.9

  • 隔离搜索和地图的代码
  • 增加ZoomToSpan方法

0.1.8

  • 支持swift项目

0.1.7

  • 绘制折线

0.1.6

  • 使用离线地图

0.1.5

  • 增加导航demo

0.1.4

  • 解决marker无法区分分辨率的问题

0.1.3

  • 优化项目结构, 使之更易于开发新功能
  • 更换iOS端json库
  • zombie问题解决

0.1.2

  • 增加经纬度转换
  • 增加调用方法交互

0.1.1

  • 增加权限请求

0.1.0

  • 完善文档, 第一阶段的功能.

0.0.10

  • Marker增加点击事件回调

0.0.9

  • 完善demo

0.0.8

  • 调整设置key的方法

0.0.6

  • 切换地图图层功能
  • 显示英文地图功能
  • 手势交互功能

0.0.5

  • 显示室内地图功能

0.0.4

  • 绘制点标记功能

0.0.3

  • 驾车路线规划功能

0.0.2

  • 控件交互功能

0.0.1

  • 显示地图定位蓝点功能

example/README.md

amap_base_example

Demonstrates how to use the amap_base plugin.

Getting Started

For help getting started with Flutter, view our online documentation.

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  amap_base: ^0.1.10

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter packages get

Alternatively, your editor might support flutter packages get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:amap_base/amap_base.dart';
  
Version Uploaded Documentation Archive
0.1.10 Dec 13, 2018 Go to the documentation of amap_base 0.1.10 Download amap_base 0.1.10 archive
0.1.9 Dec 13, 2018 Go to the documentation of amap_base 0.1.9 Download amap_base 0.1.9 archive
0.1.8+2 Dec 11, 2018 Go to the documentation of amap_base 0.1.8+2 Download amap_base 0.1.8+2 archive
0.1.8+1 Dec 11, 2018 Go to the documentation of amap_base 0.1.8+1 Download amap_base 0.1.8+1 archive
0.1.8 Dec 11, 2018 Go to the documentation of amap_base 0.1.8 Download amap_base 0.1.8 archive
0.1.7 Dec 10, 2018 Go to the documentation of amap_base 0.1.7 Download amap_base 0.1.7 archive
0.1.6 Dec 10, 2018 Go to the documentation of amap_base 0.1.6 Download amap_base 0.1.6 archive
0.1.5 Dec 10, 2018 Go to the documentation of amap_base 0.1.5 Download amap_base 0.1.5 archive
0.1.4 Dec 10, 2018 Go to the documentation of amap_base 0.1.4 Download amap_base 0.1.4 archive
0.1.3+4 Dec 10, 2018 Go to the documentation of amap_base 0.1.3+4 Download amap_base 0.1.3+4 archive

All 18 versions...

Popularity:
Describes how popular the package is relative to other packages. [more]
37
Health:
Code health derived from static analysis. [more]
100
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100
Overall:
Weighted score of the above. [more]
68
Learn more about scoring.

We analyzed this package on Dec 13, 2018, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.1.0
  • pana: 0.12.7
  • Flutter: 1.0.0

Platforms

Detected platforms: Flutter

References Flutter, and has no conflicting libraries.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.0.0-dev.68.0 <3.0.0
flutter 0.0.0
Transitive dependencies
collection 1.14.11
meta 1.1.6
sky_engine 0.0.99
typed_data 1.1.6
vector_math 2.0.8