iOS第三方地圖-高德地圖(導航sdk路徑規划)


高德地圖導航sdk的路徑規划獲取行程信息主要用到AMapNaviManager這個類

然后調下面的方法

/*!
@brief 帶起點的駕車路徑計算
@param startPoints 起點坐標。支持多個起點,起點列表的尾點為實際導航起點,其他坐標點為輔助信息,帶有方向性,可有效避免算路到馬路的另一側。
@param endPoints   終點坐標。支持多個終點,終點列表的尾點為實際導航終點,其他坐標點為輔助信息,帶有方向性,可有效避免算路到馬路的另一側。
@param wayPoints   途經點坐標序列,同時支持最多3個途經點的路徑規划。
@param strategy    駕車路徑的計算策略
@return 路徑是否計算成功
*/
- (BOOL)calculateDriveRouteWithStartPoints:(NSArray *)startPoints
endPoints:(NSArray *)endPoints
wayPoints:(NSArray *)wayPoints
drivingStrategy:(AMapNaviDrivingStrategy)strategy;

成功之后會走AMapNaviManagerDelegate的代理方法

/*!
@brief 駕車路徑規划成功后的回調函數
*/
- (void)naviManagerOnCalculateRouteSuccess:(AMapNaviManager *)naviManager;

代理返回的AMapNaviManager就有路徑信息

/*!
@brief 當前導航路徑的信息
*/
@property (nonatomic, readonly) AMapNaviRoute *naviRoute;

當我們點進去看,找到了。。

/*!
@brief 導航路徑總長度(單位:米)
*/
@property (nonatomic, assign) int routeLength;
/*!
@brief 導航路徑所需的時間(單位:秒)
*/
@property (nonatomic, assign) int routeTime;

顯示終點起點(添加到上面就行了)

/**
*  創建起點和終點的annitation(起點是定位點的話不創建傳入的時候傳入坐標就行了)
*/
- (void)addBeginAndEndAnnotation {
_endAnnotation = [[MAPointAnnotation alloc] init];
CLLocationCoordinate2D coordinate = {30.655593,104.073803};
[_endAnnotation setCoordinate:coordinate];
_endAnnotation.title        = @"終點";
[self.mapView addAnnotation:_endAnnotation];
_beginAnnotation = [[MAPointAnnotation alloc] init];
CLLocationCoordinate2D coordinatebegin = {30.612339,104.071503};
[_beginAnnotation setCoordinate:coordinatebegin];
_beginAnnotation.title        = @"起點";
[self.mapView addAnnotation:_beginAnnotation];
}

會調MAMapViewDelegate中的生成相應的anntation

/*!
@brief 根據anntation生成對應的View
@param mapView 地圖View
@param annotation 指定的標注
@return 生成的標注View
*/
- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id <MAAnnotation>)annotation;

繪制路徑(得到路徑信息繪制)

- (void)showRouteWithNaviRoute:(AMapNaviRoute *)naviRoute
{
if (naviRoute == nil)
{
return;
}
// 清除舊的overlays
if (_polyline)
{
[self.mapView removeOverlay:_polyline];
self.polyline = nil;
}
NSUInteger coordianteCount = [naviRoute.routeCoordinates count];
CLLocationCoordinate2D coordinates[coordianteCount];
for (int i = 0; i < coordianteCount; i++)
{
AMapNaviPoint *aCoordinate = [naviRoute.routeCoordinates objectAtIndex:i];
coordinates[i] = CLLocationCoordinate2DMake(aCoordinate.latitude, aCoordinate.longitude);
}
_polyline = [MAPolyline polylineWithCoordinates:coordinates count:coordianteCount];
[self.mapView addOverlay:_polyline];
}

 百度雲盤demo地址:http://pan.baidu.com/s/1kTEOK0v


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM