amap_base_map 0.4.4+4
#DEPRECATED# #
请使用 https://github.com/fluttify-project 下的高德插件代替.
高德地图Flutter插件 基于AndroidView和UiKitView #
amap_base | |
---|---|
amap_base_map | |
amap_base_location | |
amap_base_search | |
amap_base_navi |
[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_preview
为true
. 参考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: #
- 为什么定位到非洲去了?
- 实际上是定位在了经纬度(0, 0)的位置了, 那个位置大致在非洲西部的几内亚湾, 原因是key 设置错了, 建议检查一下key的设置.
- 为什么Android端用Flutter运行后奔溃, 但是直接用Android SDK运行成功?
- 指定项目的编译选项
Additional arguments
增加--target-platform android-arm
.从这里打开选项对话框.
VS Code
配置方式.
TODO LIST: #
- 地图
- [x] 创建地图
- [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] 获取位置
- [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 #
显示地图
和定位蓝点
功能
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
|
We analyzed this package on Dec 9, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:
- Dart: 2.6.1
- pana: 0.13.1+4
- Flutter: 1.12.13+hotfix.2
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. 在AMapController.setMyLocationStyle中去设置我的位置相关的配置.
line 141 col 7: 'myLocationEnabled' is deprecated and shouldn't be used. 在AMapController.setMyLocationStyle中去设置我的位置相关的配置.
line 141 col 52: 'myLocationEnabled' is deprecated and shouldn't be used. 在AMapController.setMyLocationStyle中去设置我的位置相关的配置.
line 147 col 438: 'myLocationEnabled' is deprecated and shouldn't be used. 在AMapController.setMyLocationStyle中去设置我的位置相关的配置.
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.8 | ||
permission_handler | 3.3.0 | 4.0.0 | |
sky_engine | 0.0.99 | ||
typed_data | 1.1.6 | ||
vector_math | 2.0.8 |