amap_base_map 0.4.4+4

  • Readme
  • Changelog
  • Example
  • Installing
  • 87

#DEPRECATED# #

请使用 https://github.com/fluttify-project 下的高德插件代替.

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

amap_basepub package
amap_base_mappub package
amap_base_locationpub package
amap_base_searchpub package
amap_base_navipub package

[TOC]

安装 #

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

amap_base: x.x.x
amap_base_map: x.x.x # 仅地图
amap_base_navi: x.x.x # 仅导航(高德导航SDK已包含地图, 不要跟amap_base_map重复引用)
amap_base_search: x.x.x # 仅搜索
amap_base_location: x.x.x # 仅定位

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

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

Android项目默认集成了androidx, 如果要使用android-support库的话, 使用android-support-library分支! 使用方法:

amap_base:
    git:
      url: https://github.com/yohom/amap_base_flutter.git
      ref: android-support-library
      path: base(/map/location/search/navi)

导入:

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统一.

关于包的大小 #

  • 目前已经按照高德提供的各个子包, 分出了4个分支(2d地图没有支持计划).
    • feature/map分支依赖了高德3DMap库.
    • feature/location分支依赖了高德Location库.
    • feature/navi分支依赖了高德Navi库(Navi库包含了3DMap库, 不要重复引用Navi库和3DMap库!).
    • feature/search分支依赖了高德Search库.

关于Swift项目 #

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

关于项目结构 #

项目结构按照高德官方的4个子包(不包括2D地图)组织. 分为地图, 定位, 导航, 搜索四大块.

|-- me.yohom.amapbase
    |-- `AMapBasePlugin`: Flutter插件类
    |-- `FunctionRegistry`: 功能登记处, 所有功能都需要在此处注册.
    |-- `IMapMethodHandler`: **处理委托对象**接口.
    |-- common: 通用代码
    |-- map: 地图功能模块
        |-- MapHandlers
        |-- MapModels: 数据模型
        |-- `AMapFactory`: AMapView工厂, Flutter的platform view需要
    |-- navi: 导航功能模块
        |-- NaviHandlers
        |-- NaviModels: 数据模型
    |-- search: 搜索功能模块
        |-- SearchHandlers
        |-- SearchModels: 数据模型
    |-- location: 定位功能模块
        |-- LocationHandlers
        |-- LocationModels: 数据模型

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这里打开选项对话框. VS Code配置方式.

TODO LIST: #

  • 地图
    • [x] 创建地图
      • [x] 显示地图
      • [x] 显示定位蓝点
      • [x] 显示室内地图
      • [x] 切换地图图层
      • [x] 使用离线地图
      • [x] 显示英文地图
      • [x] 自定义地图
    • [x] 与地图交互
      • [x] 控件交互
      • [x] 手势交互
      • [x] 调用方法交互
      • [x] 地图截屏功能
    • [ ] 在地图上绘制
      • [x] 绘制点标记
      • [x] 绘制折线
      • [ ] 绘制面
      • [ ] 轨迹纠偏
      • [ ] 点平滑移动
      • [ ] 绘制海量点图层
    • [x] 地图计算工具
      • [x] 坐标转换
      • [x] 距离/面积计算
      • [x] 距离测量
  • 搜索
    • [ ] 获取地图数据
      • [x] 获取POI数据
      • [x] 获取地址描述数据
      • [ ] 获取行政区划数据
      • [ ] 获取公交数据
      • [ ] 获取天气数据
      • [ ] 获取业务数据(云图功能)
      • [ ] 获取交通态势信息
    • [ ] 出行线路规划
      • [x] 驾车出行路线规划
      • [ ] 步行出行路线规划
      • [ ] 公交出行路线规划
      • [ ] 骑行出行路线规划
      • [ ] 货车出行路线规划
  • 导航
    • [x] 导航组件
      • [x] 使用导航组件
    • [ ] 出行路线规划
      • [ ] 驾车路线规划
      • [ ] 货车路线规划
      • [ ] 步行路线规划
      • [ ] 骑行路线规划
    • [ ] 在地图上导航
      • [ ] 实时导航
      • [ ] 模拟导航
      • [ ] 智能巡航
      • [ ] 传入外部GPS数据
      • [ ] 导航UI定制化
    • [ ] HUD导航模式
      • [ ] HUD导航
    • [ ] 获取导航数据
      • [ ] 导航数据
    • [ ] 语音播报
      • [ ] 语音合成
  • 定位
    • [x] 获取位置
      • [x] 获取定位数据
    • [ ] 辅助功能
      • [ ] 地理围栏
      • [ ] 坐标转换与位置判断

0.4.4 #

  • 加入amap_base_core

0.4.3 #

  • 增加地图点击事件流

0.4.2 #

  • Marker增加自定义数据字段object

0.4.1 #

  • 绘制多边形
  • ShowMyLocation

0.4.0 #

  • 升级kotlin到1.3.x

0.3.4 #

  • 减少不必要的权限申请

0.3.3 #

  • 增加android-support的兼容支持

0.3.0 #

  • 使用子工程的架构替换子分支的架构

0.2.12 #

  • 使用androidx代替support库

0.2.11 #

  • Android端的activity回调的Bundle类型都换成可空类型
  • 优化权限请求接口

0.2.10 #

  • 允许只依赖不同的子功能

0.2.8 #

  • 搜索公交站点

0.2.7 #

  • 计算距离

0.2.6 #

  • 计算直线距离,获取中心点坐标

0.2.5 #

  • 自定义地图

0.2.4 #

  • 地图截图

0.2.3 #

  • 获取地址描述数据

0.2.2 #

  • 增加只定位一次的方法

0.2.1 #

  • 解决example工程的zombie问题

0.2.0 #

  • 拆分出地图分支, 导航分支, 定位分支, 搜索分支, 以提供更小的包

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_map: ^0.4.4+4

2. Install it

You can install packages from the command line:

with Flutter:


$ flutter pub get

Alternatively, your editor might support flutter pub 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_map/amap_base_map.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
76
Health:
Code health derived from static analysis. [more]
97
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
100
Overall:
Weighted score of the above. [more]
87
Learn more about scoring.

We analyzed this package on Oct 21, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.5.1
  • pana: 0.12.21
  • Flutter: 1.9.1+hotfix.4

Platforms

Detected platforms: Flutter

References Flutter, and has no conflicting libraries.

Health suggestions

Fix lib/src/map/model/amap_options.dart. (-1.99 points)

Analysis of lib/src/map/model/amap_options.dart reported 4 hints:

line 57 col 14: 'myLocationEnabled' is deprecated and shouldn't be used.

line 141 col 7: 'myLocationEnabled' is deprecated and shouldn't be used.

line 141 col 52: 'myLocationEnabled' is deprecated and shouldn't be used.

line 147 col 438: 'myLocationEnabled' is deprecated and shouldn't be used.

Fix lib/src/map/calculate_tool.dart. (-1 points)

Analysis of lib/src/map/calculate_tool.dart reported 2 hints:

line 29 col 3: The class 'Future' wasn't exported from 'dart:core' until version 2.1, but this code is required to be able to run on earlier versions.

line 52 col 3: The class 'Future' wasn't exported from 'dart:core' until version 2.1, but this code is required to be able to run on earlier versions.

Fix lib/src/map/offline_manager.dart. (-0.50 points)

Analysis of lib/src/map/offline_manager.dart reported 1 hint:

line 20 col 3: The class 'Future' wasn't exported from 'dart:core' until version 2.1, but this code is required to be able to run on earlier versions.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.0.0-dev.68.0 <3.0.0
amap_base_core ^0.0.3 0.0.5+1
flutter 0.0.0
Transitive dependencies
collection 1.14.11 1.14.12
meta 1.1.7
permission_handler 3.3.0
sky_engine 0.0.99
typed_data 1.1.6
vector_math 2.0.8