高德地图API(流程法)整理分析
【高德地图API(流程法)分析】:
前言:公司现在的网约车项目,使用的是高德地图,因为地图导航这一块的功能占比量比较大,为了方便大家对高德地图API的了解和学习使用,使用流程图把高德API分析整理了下。
——————————————————【一】流程:开始当前位置定位——————————————————————
【乘客当前位置定位涉及的API:】
/**
* @brief 单次定位。如果当前正在连续定位,调用此方法将会失败,返回NO。
该方法将会根据设定的 desiredAccuracy 去 获取定位信息。
如果获取的定位信息精确度低于 desiredAccuracy ,将会持续的等待定位信息,直到超时后通过completionBlock返回精度最高的定位信息。
可以通过 stopUpdatingLocation 方法去取消正在进行的单次定位请求。
* @param withReGeocode 是否带有逆地理信息(获取逆地理信息需要联网)
* @param completionBlock 单次定位完成后的Block
* @return 是否成功添加单次定位Request
*/
- (BOOL)requestLocationWithReGeocode:(BOOL)withReGeocode completionBlock:(AMapLocatingCompletionBlock)completionBlock;
/**
* @brief 连续定位回调函数.注意:如果实现了本方法,则定位信息不会通过amapLocationManager:didUpdateLocation:方法回调。
* @param manager 定位 AMapLocationManager 类。
* @param location 定位结果。
* @param reGeocode 逆地理信息。
*/
- (void)amapLocationManager:(AMapLocationManager *)manager didUpdateLocation:(CLLocation *)location reGeocode:(AMapLocationReGeocode *)reGeocode;
- 显示当前位置定位内容API:
/**
* @brief 设置地图使其可以显示数组中所有的annotation, 如果数组中只有一个则直接设置地图中心为annotation的位置。
* @param annotations 需要显示的annotation
* @param animated 是否执行动画
*/
- (void)showAnnotations:(NSArray *)annotations animated:(BOOL)animated;
——————————————————————————————————————————
—————————————————【二】流程:上,下车点位置推荐——————————————————————
【定位地址搜索案例】:
AMapPOIKeywordsSearchRequest *request = [[AMapPOIKeywordsSearchRequest alloc] init];
request.keywords = keywords;
request.city = self.currentCity;
request.requireSubPOIs = YES;
request.requireExtension = YES;
request.cityLimit = YES;
request.offset = 10;
//推荐点位置搜索请求
[self.mapSearch AMapPOIKeywordsSearch:request];
- 乘客上车点位置推荐涉及的API:
/**
* @brief POI查询回调函数
* @param request 发起的请求,具体字段参考 AMapPOISearchBaseRequest 及其子类。
* @param response 响应结果,具体字段参考 AMapPOISearchResponse 。
*/
- (void)onPOISearchDone:(AMapPOISearchBaseRequest *)request response:(AMapPOISearchResponse *)response;
- 乘客下车点位置推荐涉及的API:
/**
* @brief POI查询回调函数
* @param request 发起的请求,具体字段参考 AMapPOISearchBaseRequest 及其子类。
* @param response 响应结果,具体字段参考 AMapPOISearchResponse 。
*/
- (void)onPOISearchDone:(AMapPOISearchBaseRequest *)request response:(AMapPOISearchResponse *)response;
—————————————————————————————————————————
——————————————————【三】流程:驾车路径规划_之_查询———————————————————————
- 驾车行程路线请求涉及的API:
【案例】:
self.driveAllLine = [[AMapDrivingRouteSearchRequest alloc] init];
self.driveAllLine.requireExtension = YES;
/* 出发点. */
self.driveAllLine.origin = [AMapGeoPoint locationWithLatitude: self.startPointAnnotation.coordinate.latitude
longitude: self.startPointAnnotation.coordinate.longitude];
/* 目的地. */
self.driveAllLine.destination = [AMapGeoPoint locationWithLatitude: self.endPointAnnotation.coordinate.latitude
longitude: self.endPointAnnotation.coordinate.longitude];
/*发起请求 */
[self.searchAPI AMapDrivingRouteSearch:self.driveAllLine];
【第一步】:
———出发点,目的地坐标点 (经度,纬度)生成API————
/**
* @brief 实例化一个AMapGeoPoint对象
* @param lat 纬度
* @param lon 经度
*/
+ (AMapGeoPoint *)locationWithLatitude:(CGFloat)lat longitude:(CGFloat)lon;
【第二步】:
———驾车路径规划查询接口API————
/**
* @brief 驾车路径规划查询接口
* @param request 查询选项。具体属性字段请参考 AMapDrivingRouteSearchRequest 类。
*/
- (void)AMapDrivingRouteSearch:(AMapDrivingRouteSearchRequest *)request;
【第三步】:
———路径规划查询回调API————
/**
* @brief 路径规划查询回调
* @param request 发起的请求,具体字段参考 AMapRouteSearchBaseRequest 及其子类。
* @param response 响应结果,具体字段参考 AMapRouteSearchResponse 。
*/
- (void)onRouteSearchDone:(AMapRouteSearchBaseRequest *)request response:(AMapRouteSearchResponse *)response;
—————————————————————————————————————————
——————————————————【四】流程:驾车路径规划_之_显示———————————————————————
- 驾车行程路线添加显示涉及的API:
【第一步】:
———移除标注(移除小车等图标)API———
/**
* @brief 移除标注
* @param annotation 要移除的标注
*/
- (void)removeAnnotation:(id <MAAnnotation>)annotation;
【第二步】:
———移除overlay数组(路径)API————
/**
* @brief 移除一组Overlay
* @param overlays 要移除的overlay数组
*/
- (void)removeOverlays:(NSArray *)overlays;
【第三步】:
———向地图窗口添加标注API————
/**
* @brief 向地图窗口添加标注,需要实现MAMapViewDelegate的-mapView:viewForAnnotation:函数来生成标注对应的View
* @param annotation 要添加的标注
*/
- (void)addAnnotation:(id <MAAnnotation>)annotation;
【第四步】:
———生成的标注View 将要显示处理API(用于区分标注类型的特殊设置)————
* @param mapView 地图View
* @param annotation 指定的标注
* @return 生成的标注View
*/
- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id <MAAnnotation>)annotation;
【第五步】:
———根据交通状况的线路样式设置显示路径API————
/**
* @brief 根据overlay生成对应的Renderer
* @param mapView 地图View
* @param overlay 指定的overlay
* @return 生成的覆盖物Renderer
*/
- (MAOverlayRenderer *)mapView:(MAMapView *)mapView rendererForOverlay:(id <MAOverlay>)overlay;
—————————————————————————————————————————
——————————————————【五】其他API———————————————————————
- 设备方向更新API
/**
* @brief 位置或者设备方向更新后,会调用此函数
* @param mapView 地图View
* @param userLocation 用户定位信息(包括位置与设备方向等数据)
* @param updatingLocation 标示是否是location数据更新, YES:location数据更新 NO:heading数据更新
*/
- (void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation updatingLocation:(BOOL)updatingLocation;
- 逆地址编码查询API
/**
* @brief 逆地址编码查询接口
* @param request 查询选项。具体属性字段请参考 AMapReGeocodeSearchRequest 类。
*/
- (void)AMapReGoecodeSearch:(AMapReGeocodeSearchRequest *)request;
- 地图将要发生移动时调用API
/**
* @brief 地图将要发生移动时调用此接口
* @param mapView 地图view
* @param wasUserAction 标识是否是用户动作
*/
- (void)mapView:(MAMapView *)mapView mapWillMoveByUser:(BOOL)wasUserAction;
- 地图移动结束后调用API
/**
* @brief 地图移动结束后调用此接口
* @param mapView 地图view
* @param wasUserAction 标识是否是用户动作
*/
- (void)mapView:(MAMapView *)mapView mapDidMoveByUser:(BOOL)wasUserAction;
结束语:通过项目的一个流程跑下来,用到的高德API分析暂时就这些。
附加问题: 在使用高德SDK过程中,出现一个系统非常耗电的问题,根据安卓端和iOS端通过工具测试SDK流程的耗电节点图来看,项目需要对影响耗电的模块进行优化。
高德地图API(流程法)整理分析的更多相关文章
- 【高德地图API】从零开始学高德JS API(六)——坐标转换
原文:[高德地图API]从零开始学高德JS API(六)——坐标转换 摘要:如何从GPS转到谷歌?如何从百度转到高德?这些都是小case.我们还提供,如何将基站cell_id转换为GPS坐标? --- ...
- 高德地图 API 计算两个城市之间的距离
1. 目前在项目中,遇到一个需求不会做,就是要计算两个城市之间的距离,而这两个城市的输入是可变的,如果要使用数据库来先存储两地之间的距离,调用的时候再来调用,那么存数据的时候,要哭的,因为光是省级区域 ...
- 百度地图API和高德地图API资料集锦
[高德地图API]从零开始学高德JS API(五)路线规划——驾车|公交|步行 [高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自 ...
- 【高德地图API】绘制大地线 Geodesic/Great Circles
大地线(geodesic)是指地球椭球面上连接两点的最短程曲线. 大地线上每点的密切面(无限接近的3个点所构成的平面)都包含此点的曲面法线.因曲面法线互不相交,故为一条空间曲面曲线.在球面上,大圆弧( ...
- 高德地图api实现地址和经纬度的转换(python)
利用高德地图web服务api实现地理/逆地址编码 api使用具体方法请查看官方文档 文档网址:http://lbs.amap.com/api/webservice/guide/api/georegeo ...
- 高德地图API应用
高德地图官网:http://api.amap.com/javascript/ 输入关键字,搜索地址功能的网页: 1.引用远程Map Api(js)网址形式(注册后获取) 2.定义个<div> ...
- 【高德地图API】如何解决坐标转换,坐标偏移?
http://bbs.amap.com/thread-18617-1-1.html#rd?sukey=cbbc36a2500a2e6c2b0b19115118ace519002ff3a52731f13 ...
- android 高德地图API 之 java.lang.UnsatisfiedLinkError: Couldn't load amapv3: findLibrary returned null错误
错误场景: 运行android app时,在运行到调用高德地图API时,出现 “java.lang.UnsatisfiedLinkError: Couldn't load amapv3: findLi ...
- 高德地图API
这周计划: 周一 早上 (高德地图API) 中午写(IFE PART ONE) 下午(高德地图API) 下班(IFE PART ONE)
随机推荐
- idea 断点调试
一.步骤控制 二.查看变量 IDEA debug查看变量值有3种方法: 1.鼠标悬浮 2.alt+f8快捷键(选中变量表达式,比如匿名变量或方法参数,再按atl+f8,接着回车) 3.debug窗口查 ...
- 初识oracle重做日志文件
转自 http://blog.csdn.net/indexman/article/details/7746948 以下易容翻译自oracle dba官方文档,不足之处还望指出. 管理重做日志文件 学习 ...
- java基础(二) 自增自减与贪心规则
引言 JDK中提供了自增运算符++,自减运算符--.这两个操作符各有两种使用方式:前缀式(++ a,--a),后缀式(a++,a--).可能说到这里,说不得有读者就会吐槽说,前后缀式都挺简单的,前 ...
- leetCode题解之First Missing Positive
1.问题描述 2.题解思路 本题的思路是对于数组中每个正的元素,应该将其放到数组中对应的位置,比如元素1 ,应该放在数组的第一个位置.以此类推,最后检查数组中元素值和下标不匹配的情况. 3.代码 in ...
- linux smem 查看各进程使用memory情况
SMEM(8) SMEM(8) NAME smem - Report memory usage with shared memory divided proportionally. SYNOPSIS ...
- 安装oracle 11g时,报启动服务出现错误,找不到OracleMTSRecoveryService的解决方法
很多人在安装orcl数据库时,出现很多报错,我也不例外,因上次数据库出现问题,无法修复,只能从新安装,无奈的是,安装时报启动服务出现错误,找不到OracleMTSRecoveryService错MMP ...
- ORA-28547:(Navicat Premium连接oracle报错)
1.背景 Navicat Premium连接oracle报 ORA-28547:connection to server failed, probable Oracle Net admin errro ...
- Centos7 apache2.4.29(httpd) 安装
重点参考文章:https://blog.csdn.net/MrDing991124/article/details/78829184 写的很详细了,自己按着改博文走了不遍,不错! 一.配置安装环境 ...
- Python的unittest框架的断言总结
常用的断言方法如下: assertFalse:为假时返回True:self.assertFalse(表达式,“表达式为true时打印的message”) assertTrue:为真时返回True:se ...
- 洛谷 P4011 孤岛营救问题【最短路+分层图】
题外话:昨夜脑子昏沉,今早一调试就过了...错误有:我忘记还有墙直接穿墙过...memset初始化INF用错了数...然后手残敲错一个状态一直过不了样例...要是这状态去比赛我简直完了......or ...