博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
地图划线Demo
阅读量:4566 次
发布时间:2019-06-08

本文共 4686 字,大约阅读时间需要 15 分钟。

1 #import "ViewController.h"  2 #import 
3 #import
4 #import "HLannotation.h" 5 @interface ViewController ()
6 7 8 //位置管理者 9 @property (nonatomic,strong) CLLocationManager *manager ; 10 11 //地图 12 @property (nonatomic,strong) MKMapView *mapView ; 13 14 //显示我的位置2D坐标 15 @property (nonatomic) CLLocationCoordinate2D locationCoordinate2D ; 16 17 //目的地的2D坐标 18 @property (nonatomic) CLLocationCoordinate2D desCoordinate2D ; 19 20 21 @end 22 23 @implementation ViewController 24 25 - (void)viewDidLoad { 26 [super viewDidLoad]; 27 28 self.mapView = [[MKMapView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 600)]; 29 [self.view addSubview:_mapView]; 30 31 self.manager = [[CLLocationManager alloc] init]; 32 if ([[UIDevice currentDevice].systemVersion floatValue] >=8.0) { 33 34 [self.manager requestAlwaysAuthorization]; 35 36 [self.manager requestWhenInUseAuthorization]; 37 } 38 39 //设置目的地的位置 40 self.desCoordinate2D = CLLocationCoordinate2DMake(23.123, 113.123) ; 41 42 self.mapView.delegate = self ; 43 44 } 45 46 47 #pragma mark --起点关联的方法 48 - (IBAction)btnAction1:(UIButton *)sender { 49 50 self.mapView.showsUserLocation = YES ; 51 } 52 53 #pragma mark --目的地关联的方法 54 - (IBAction)btnAction2:(UIButton *)sender { 55 56 // self.locationCoordinate2D = self.mapView.userLocation.coordinate ; 57 58 //创建一个标注视图 59 HLannotation *annotation = [[HLannotation alloc] init]; 60 61 //为标注视图标注位置 62 annotation.coordinate = self.desCoordinate2D ; 63 annotation.title = @"天河区"; 64 annotation.subtitle = @"天源路"; 65 66 //讲标注视图添加到地图上面 67 [self.mapView addAnnotation:annotation]; 68 69 //对地图的比例尺和区域范围进行设置 70 MKCoordinateRegion region ; 71 region.span.latitudeDelta = 0.5 ; 72 region.span.longitudeDelta = 0.5 ; 73 region.center = self.desCoordinate2D ; 74 [self.mapView setRegion:region]; 75 76 } 77 78 #pragma mark --路线关联的方法 79 - (IBAction)btnAction3:(UIButton *)sender { 80 81 //1.拿到起点和终点的坐标 82 CLLocationCoordinate2D formCoordinate2D = self.locationCoordinate2D ; 83 CLLocationCoordinate2D toCoordinate2D = self.desCoordinate2D ; 84 85 //2.将2D坐标类型的位置转化为MKplace 86 MKPlacemark *formPlaceMark = [[MKPlacemark alloc] initWithCoordinate:formCoordinate2D addressDictionary:nil]; 87 MKPlacemark *toPlaceMark = [[MKPlacemark alloc] initWithCoordinate:toCoordinate2D addressDictionary:nil]; 88 89 //3.用placeMark创建mapItem 90 MKMapItem *formItem = [[MKMapItem alloc] initWithPlacemark:formPlaceMark]; 91 MKMapItem *toItem = [[MKMapItem alloc] initWithPlacemark:toPlaceMark]; 92 93 94 //4.请求两点之间的路线 95 //>>>>1.创建一个方向请求 96 MKDirectionsRequest *request = [[MKDirectionsRequest alloc] init]; 97 request.source = formItem ; 98 request.destination = toItem ; 99 100 //如果来那点之间有多条线路返回多条,默认NO101 request.requestsAlternateRoutes = YES ;102 103 //5.创建一个线路信息104 MKDirections *directions = [[MKDirections alloc] initWithRequest:request];105 106 //6.画出路线107 [directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error) {108 109 if (error) {110 111 NSLog(@"请检查你的网络...");112 }113 else114 {115 //创建一个线路116 MKRoute *route = [response.routes firstObject];117 118 //把路线在地图上显示出来119 [self.mapView addOverlay:route.polyline];120 }121 122 }];123 124 125 }126 127 128 #pragma mark --自定义地图上线路的方法129 -(MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id
)overlay130 {131 132 MKPolylineRenderer *renderer = [[MKPolylineRenderer alloc] initWithOverlay:overlay];133 134 //135 renderer.lineWidth = 5.0f ;136 renderer.strokeColor = [UIColor purpleColor];137 return renderer ;138 139 }140 #pragma mark --更细用户的位置141 -(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation142 {143 self.locationCoordinate2D = self.mapView.userLocation.coordinate ;144 }

自定义标注视图:继承NSObject

1 #import 
2 #import
3 @interface HLannotation : NSObject
//必需遵守的协议 4 //必选 5 @property (nonatomic) CLLocationCoordinate2D coordinate; 6 //可选 7 @property (nonatomic, copy) NSString *title; 8 @property (nonatomic, copy) NSString *subtitle; 9 10 @end

 

转载于:https://www.cnblogs.com/yyxblogs/p/4872867.html

你可能感兴趣的文章
jquery和dom元素相互转换
查看>>
放大的X--HDOJ-201307292012
查看>>
题目831-签到-nyoj-20140818
查看>>
百词斩-斩家秘籍
查看>>
php反射
查看>>
hdu 1018 Big Number 数学结论
查看>>
【MUI】百度地图定位功能
查看>>
bzoj3687 简单题
查看>>
STL容器简介
查看>>
HashMap遍历的两种方式,推荐使用entrySet()
查看>>
如何在Android开发中测试应用在真机上实验
查看>>
传奇代码研究 极品机率...
查看>>
mysql存储过程和定时调用
查看>>
(转)park1.0.0生态圈一览
查看>>
需要学习双拼了
查看>>
字符串和数组使用时该注意的一些地方
查看>>
我们的故事墙--一切为了可视化
查看>>
进程与线程的区别?-转
查看>>
php array_walk
查看>>
yolo train:CUDA Error: an illegal memory access was encountered darknet: cuda.c:36:check_error
查看>>