关键词 ==
MKDirections
1.
MKDirections
*direction = [[
MKDirections
alloc
]
initWithRequest
:request];
2.
MKDirectionsRequest
*request = [[
MKDirectionsRequest
alloc
]
init
];
request.source request.destination === MKMapItem ==
MKPlacemark == CLPlaceMark == 地理编码
3.数据获得和处理
[direction
calculateDirectionsWithCompletionHandler
:^(
MKDirectionsResponse
*
_Nullable
response,
NSError
*
_Nullable
error) {
[response. routes enumerateObjectsUsingBlock :^( MKRoute * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog ( @"%@" ,obj. name );
NSLog ( @"%f" ,obj. distance );
NSLog ( @"%@" ,obj. polyline );
[response. routes enumerateObjectsUsingBlock :^( MKRoute * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSLog ( @"%@" ,obj. name );
NSLog ( @"%f" ,obj. distance );
NSLog ( @"%@" ,obj. polyline );
MKPolyline *polyline = obj.polyline; //划线
[self.tapView addOverlay:polyline]; //
代理
[obj.
steps
enumerateObjectsUsingBlock
:^(
MKRouteStep
*
_Nonnull
obj,
NSUInteger
idx,
BOOL
*
_Nonnull
stop) {
MKPolyline *polyline = obj. polyline ;
[ self . tapView addOverlay :polyline];
MKPolyline *polyline = obj. polyline ;
[ self . tapView addOverlay :polyline];
}];
}];
}];
#pragma -mark
起点
终点
圆圈
MKCircle *sourceCircle = [ MKCircle circleWithCenterCoordinate :sourceCLPm. location . coordinate radius : 30 ];
[ self . tapView addOverlay :sourceCircle];
MKCircle *destinationCircle = [ MKCircle circleWithCenterCoordinate :destinationCLPm. location . coordinate radius : 30 ];
MKCircle *sourceCircle = [ MKCircle circleWithCenterCoordinate :sourceCLPm. location . coordinate radius : 30 ];
[ self . tapView addOverlay :sourceCircle];
MKCircle *destinationCircle = [ MKCircle circleWithCenterCoordinate :destinationCLPm. location . coordinate radius : 30 ];
[self.tapView addOverlay:destinationCircle];
4划线 代理 协议
#pragma -mark 绘制
- ( MKOverlayRenderer *)mapView:( MKMapView *)mapView rendererForOverlay:( id < MKOverlay >)overlay{
if ([overlay isKindOfClass :[ MKPolyline class ]]){
MKPolylineRenderer *polylineRender = [[ MKPolylineRenderer alloc ] initWithOverlay :overlay];
polylineRender. lineWidth = 2 ;
polylineRender. strokeColor = [ UIColor redColor ];
return polylineRender;
}
if ([overlay isKindOfClass :[ MKCircle class ]]){
MKCircleRenderer *circle = [[ MKCircleRenderer alloc ] initWithCircle :overlay];
circle. lineWidth = 2 ;
circle. strokeColor = [ UIColor cyanColor ];
return
circle;
}
return nil ;
return nil ;
}