- (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;
}
*/

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步