高德地圖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
* @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;