首页 > 代码库 > 位置与地图(三)给地图添加覆盖层
位置与地图(三)给地图添加覆盖层
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.mapView = [[MKMapView alloc] initWithFrame:self.view.bounds]; self.mapView.mapType = MKMapTypeStandard; self.mapView.scrollEnabled = YES; // 设置地图不可旋转 self.mapView.rotateEnabled = NO; self.mapView.zoomEnabled = YES; self.mapView.showsUserLocation = YES; // 设置地图中心的经纬度 CLLocationCoordinate2D center = {39.910650,116.47030}; // 设置地图显示的范围,数值越小细节越清楚 MKCoordinateSpan span = {0.01,0.01}; // 二者合一设置显示区域 MKCoordinateRegion region = {center,span}; [self.mapView setRegion:region animated:YES]; [self.view addSubview:self.mapView]; UILongPressGestureRecognizer *longGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)]; [self.mapView addGestureRecognizer:longGesture]; // 设置代理 self.mapView.delegate = self; } - (void)longPress:(UILongPressGestureRecognizer *)longGesture{ // 获取长按点得坐标 CGPoint postion = [longGesture locationInView:self.mapView]; // 将长按点坐标转换为经纬度 CLLocationCoordinate2D coord2D = [self.mapView convertPoint:postion toCoordinateFromView:self.mapView]; // 创建一个圆形覆盖层对象 MKCircle *circle = [MKCircle circleWithCenterCoordinate:coord2D radius:100]; // 将单个的覆盖层添加到指定的层级 [self.mapView addOverlay:circle level:MKOverlayLevelAboveLabels]; } // 该方法返回的MKOverlayRenderer负责绘制覆盖层控件 - (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay{ MKCircle *circle = (MKCircle *)overlay; // iOS7之后,推荐使用MKXxxRenderer来负责渲染覆盖层控件 MKCircleRenderer *circleRend = [[MKCircleRenderer alloc] initWithCircle:circle]; circleRend.alpha = 0.3; // 填充颜色 circleRend.fillColor = [UIColor blueColor]; // 边框颜色 circleRend.strokeColor = [UIColor redColor]; return circleRend; } /*********iOS7新增的MKTileOverlay覆盖层******************************************* - (void)longPress:(UILongPressGestureRecognizer *)longGesture{ // 指定本地图片覆盖 NSURL *url = [[NSBundle mainBundle] URLForResource:@"hmt" withExtension:@"png"]; MKTileOverlay *tileOverlay = [[MKTileOverlay alloc] initWithURLTemplate:[url description]]; [self.mapView addOverlay:tileOverlay]; } // 该方法返回的MKOverlayRenderer负责绘制覆盖层控件 - (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay{ MKTileOverlayRenderer *tileRender = [[MKTileOverlayRenderer alloc] initWithOverlay:(MKTileOverlay *)overlay]; tileRender.alpha = 0.2; return circleRend; } */
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。