自定义大头针

定位和地图可以分开使用

配置时需要条件编译

//地图的头文件

#import

//定位的头文件

#import

//自定义注释类(继承于MKAnnotation,去除readyonly后的coordinate,title,subtitle)

#import "CustomAnnotation.h"

//创建地图

MKMapView *map = [[MKMapView alloc] initWithFrame:self.view.bounds];

//显示样式(系统地图高德地图)

map.mapType = MKMapTypeStandard;

//经纬度

//CLLocationCoordinate2D coor = CLLocationCoordinate2DMake(26.548277, 148.125381);

//设置地图中心点

//map.centerCoordinate = coor;

//初显示范围设置要显示的区域

//MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(coor, 100000, 100000);

//[map setRegion:region animated:YES];

//map.scrollEnabled = NO;滑动

//map.zoomEnabled = NO;缩放

//左上角比例尺,多放大几次屏幕就显示

map.showsScale = YES;

//旋转时右上角的指南针(罗盘)默认YES显示

//map.showsCompass = NO;

//设置代理MKMapViewDelegate

map.delegate = self;

//第一次加载模拟器不显示位置,更新位置就显示,如果是真机,第一次就可以显示

//运行后自己再更新位置

map.showsUserLocation = YES;

[self.view addSubview:map];

//创建定位对象

manager = [[CLLocationManager alloc] init];

//授权定位

[manager requestAlwaysAuthorization];

//要去info.plist文件配置NSLocationAlwaysUsageDescription

//创建自定义注释对象

CustomAnnotation *ann = [[CustomAnnotation alloc] init];

ann.coordinate=CLLocationCoordinate2DMake(41.5427, 116.2617);

ann.title=@"北京";

ann.subtitle=@"五环";

//标注红色圆点

[map addAnnotation:ann];

//绘制路径

//MKCircle圆圈MKPolyline折线MKPolygon闭合

//闭合区域

//坐标点数组里面有四个点

CLLocationCoordinate2Dpoints [4];

points[0] = CLLocationCoordinate2DMake(39, 100);

points[1] = CLLocationCoordinate2DMake(39, 110);

points[2] = CLLocationCoordinate2DMake(29, 110);

points[3] = CLLocationCoordinate2DMake(29, 100);

//MKPolygon *gon = [MKPolygon polygonWithCoordinates:points count:4];

//[map addOverlay:gon];

//MKPolyline *line = [MKPolyline polylineWithCoordinates:points count:4];

//[map addOverlay:line];

MKCircle *circle = [MKCircle circleWithCenterCoordinate:points[3] radius:1000000.00];

[map addOverlay:circle];

}

#pragma mark -- MKMapViewDelegate

//对绘制区域的图层进行渲染图层才能显示

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id)overlay {

if([overlay isMemberOfClass:[MKPolygon class]]) {

//渲染对象

MKPolygonRenderer * renderer = [[MKPolygonRenderer alloc] initWithPolygon:overlay];

//线宽

renderer.lineWidth= 5;

//线的颜色

renderer.strokeColor= [UIColor redColor];

//填充色

renderer.fillColor= [UIColor cyanColor];

return renderer;

} elseif ([overlay isKindOfClass:[MKPolyline class]]){

MKPolylineRenderer *render = [[MKPolylineRenderer alloc] initWithPolyline:overlay];

render.lineWidth = 5;

render.strokeColor = [UIColor orangeColor];

render.fillColor = [UIColor redColor];

return render;

} else {

MKCircleRenderer *render = [[MKCircleRenderer alloc] initWithCircle:overlay];

render.lineWidth = 1;

render.strokeColor = [UIColor purpleColor];

render.fillColor = [UIColor yellowColor];

return render;

}

}

//更新用户位置的时候调用

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocationNS_AVAILABLE(10_9, 4_0) {

//初显示范围设置要显示的区域

MKCoordinateRegion regin =MKCoordinateRegionMakeWithDistance(userLocation.location.coordinate, 100000, 100000);

//要设置才能触发

[mapView setRegion:regin animated:YES];

//更新位置点击图标显示

mapView.userLocation.title = @"福州";

mapView.userLocation.subtitle = @"hot";

}

//自定义弹出的气泡

- (nullableMKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation {

//如果是自定义的大头针就处理泡泡显示的样式

if([annotation isKindOfClass:[CustomAnnotation class]]) {

//使用MKAnnotationView不能实现animatesDrop所有使用其子类MKPinAnnotationView

MKPinAnnotationView *ann = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:NSStringFromClass([MKPinAnnotationView class])];

if(!ann) {

ann = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:NSStringFromClass([MKPinAnnotationView class])];

//美化]

//大头针的背景色

ann.pinTintColor= [UIColor purpleColor];

//掉落的动画(从上往下的效果)

ann.animatesDrop =YES;

//可以响应(弹出气泡)

ann.canShowCallout =YES;

//弹出气泡的左侧的view

ann.leftCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeInfoLight];

UIImageView *image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"1"]];

image.frame = CGRectMake(0, 0, 32, 32);

ann.rightCalloutAccessoryView = image;

}

return ann;

} else {//否则不处理返回系统自带样式

return nil;

}

}

//点击气泡上的按钮触发的方法

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control {

NSLog(@"tap ===");

}


//自定义注释类要导入这个头文件

#import

//MKAnnotation

@interface CustomAnnotation :NSObject

//去掉readyonly

//必选

@property (nonatomic,assign) CLLocationCoordinate2D coordinate;

//可选

@property (nonatomic,copy) NSString *title;

@property (nonatomic,copy) NSString *subtitle;

@implementation CustomAnnotation

//MRC  set方法

//- (void)setTitle:(NSString *)title {

//    //判断新旧值是否相等严谨

//    if (_title != title) {

//        //释放老对象的所有权

//        [_title release];

//        //为防止新对象释放掉要引用一次

//        [title retain];

//        //重新赋值(目的)

//        _title = title;

//    }

//}

@end


调试定位的经纬度
选择地区
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,776评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,527评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,361评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,430评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,511评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,544评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,561评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,315评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,763评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,070评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,235评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,911评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,554评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,173评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,424评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,106评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,103评论 2 352

推荐阅读更多精彩内容