【高德地图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(流程法)整理分析的更多相关文章

  1. 【高德地图API】从零开始学高德JS API(六)——坐标转换

    原文:[高德地图API]从零开始学高德JS API(六)——坐标转换 摘要:如何从GPS转到谷歌?如何从百度转到高德?这些都是小case.我们还提供,如何将基站cell_id转换为GPS坐标? --- ...

  2. 高德地图 API 计算两个城市之间的距离

    1. 目前在项目中,遇到一个需求不会做,就是要计算两个城市之间的距离,而这两个城市的输入是可变的,如果要使用数据库来先存储两地之间的距离,调用的时候再来调用,那么存数据的时候,要哭的,因为光是省级区域 ...

  3. 百度地图API和高德地图API资料集锦

    [高德地图API]从零开始学高德JS API(五)路线规划——驾车|公交|步行   [高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自 ...

  4. 【高德地图API】绘制大地线 Geodesic/Great Circles

    大地线(geodesic)是指地球椭球面上连接两点的最短程曲线. 大地线上每点的密切面(无限接近的3个点所构成的平面)都包含此点的曲面法线.因曲面法线互不相交,故为一条空间曲面曲线.在球面上,大圆弧( ...

  5. 高德地图api实现地址和经纬度的转换(python)

    利用高德地图web服务api实现地理/逆地址编码 api使用具体方法请查看官方文档 文档网址:http://lbs.amap.com/api/webservice/guide/api/georegeo ...

  6. 高德地图API应用

    高德地图官网:http://api.amap.com/javascript/ 输入关键字,搜索地址功能的网页: 1.引用远程Map Api(js)网址形式(注册后获取) 2.定义个<div> ...

  7. 【高德地图API】如何解决坐标转换,坐标偏移?

    http://bbs.amap.com/thread-18617-1-1.html#rd?sukey=cbbc36a2500a2e6c2b0b19115118ace519002ff3a52731f13 ...

  8. android 高德地图API 之 java.lang.UnsatisfiedLinkError: Couldn't load amapv3: findLibrary returned null错误

    错误场景: 运行android app时,在运行到调用高德地图API时,出现 “java.lang.UnsatisfiedLinkError: Couldn't load amapv3: findLi ...

  9. 高德地图API

    这周计划: 周一 早上 (高德地图API) 中午写(IFE PART ONE) 下午(高德地图API) 下班(IFE PART ONE)

随机推荐

  1. leetCode题解之寻找一个数在有序数组中的范围Search for a Range

    1.问题描述 Given an array of integers sorted in ascending order, find the starting and ending position o ...

  2. C#关于微信昵称中存在的表情图标乱码解决

    //在获取微信用户信息时加密保存到数据库 System.Web.HttpUtility.UrlEncode("需要加密的字段") //前端在展示是解码 <script typ ...

  3. 关于Entity Framework更新的几种方式以及可能遇到的问题(附加类型“Model”的实体失败,因为相同类型的其他实体已具有相同的主键值)在使用 "Attach" 方法或者将实体的状态设置为 "Unchanged" 或 "Modified" 时如果图形中的任何实体具有冲突键值,则可能会发生上述行为

    在日常使用Entity Framework中,数据更新通常会用到.下面就简单封装了一个DBContext类 public partial class EFContext<T> : DbCo ...

  4. [控件] AngleGradientView

    AngleGradientView 效果 说明 1. 用源码产生带环形渐变色的view 2. 可以配合maskView一起使用 (上图中的右下角图片的效果) 源码 https://github.com ...

  5. 封装CIImage实现实时渲染

    封装CIImage实现实时渲染 CIImage属于CoreImage里面的东东,用来渲染图片的,为什么要封装它呢?其实很简单,封装好之后使用更加方便. 如果直接使用CIImage渲染图片,使用的流程如 ...

  6. esxcli software vib 命令为 ESXi 5.x/6.x 主机安装补丁程序 (2008939)

      参考KB:https://kb.vmware.com/s/article/2008939?lang=zh_CN    Symptoms 免责声明:本文为 “esxcli software vib” ...

  7. mysql 索引分类以及用途分析

    MySQL索引分为普通索引.唯一性索引.全文索引.单列索引.多列索引等等.这里将为大家介绍着几种索引各自的用途. 一. MySQL: 索引以B树格式保存 Memory存储引擎可以选择Hash或BTre ...

  8. PHP设计模式系列 - 策略模式

    策略模式: 策略模式设计帮助构建的对象不必自身包含逻辑,而是能够根据需要利用其他对象中的算法. 使用场景: 例如有一个CD类,我们类存储了CD的信息. 原先的时候,我们在CD类中直接调用getCD方法 ...

  9. Day4 MySql触发器视图索引以及设计优化

    触发器 MySQL包含对触发器的支持.触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行. 通过事件触发,不能传参 语法 CREA ...

  10. Discuz!教程之删除注释云平台JS,加快DISCUZ访问

    很多站长反应打开网站的时候有个http://discuz.gtimg.cn/cloud/scripts/discuz_tips.js?v=1一直在加载中,导致网页打开速度很慢,这个时候你可以按本文教程 ...