蓝懿教育九月二十四日记录

添加自定义大头针

1)创建一个继承于NSOject的大头针对象类

2)在MKAnnotation类中导入MapKit,添加协议<MKAnnotation>

#import <Foundation/Foundation.h>

#import <MapKit/MapKit.h>

@interface MyAnnotation : NSObject<MKAnnotation>

3)按住command的键到<MKAnnotation>中查找要添加的属性,并删除只读readonly

添加大头针属性

@property (nonatomic) CLLocationCoordinate2D coordinate;

@property (nonatomic, copy) NSString *title;

@property (nonatomic, copy) NSString *subtitle;

可以创建对象属性,给大头针添加信息

@property (nonatomic, strong)Business *business;

4)在地图类中引入大头针类,创建大头针对象并给其属性赋值

添加在地图中

#import "MyAnnotation.h"

//从网络中提取信息

NSMutableDictionary *dic = [NSMutableDictionary dictionary];

NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];

[dic setObject:[ud objectForKey:@"city"] forKey:@"city"];

NSArray *bussinesses = [DianpingApi requestBusinessesWithParams:dic];

//创建大头针,并将数组中的信息分别赋给大头针

for (Business *b in bussinesses) {

//排除掉不符合条件的信息(这里是位置信息不符合)

if (b.coord.latitude>200) {

continue;

}

//为每个信息创建相应的大头针,并将信息存储在大头针内

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

ann.coordinate = b.coord;

ann.business = b;

//添加大头针到地图中

[self.mapView addAnnotation:ann];

//设置mapView的显示位置与缩放比例

[self.mapView setRegion:MKCoordinateRegionMake(b.coord, MKCoordinateSpanMake(.1, .1))];

}

5)在MapViewController类中引入#import "MyAnnotationView.h",并添加<MKMapViewDelegate>协议并在storyboard中给mapView连线,添加协议

#import "MyAnnotationView.h"

@interface ViewController ()<MKMapViewDelegate>

6)按住Command键点击<MKMapViewDelegate>协议,寻找方法

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation;

显示在MapView中显示大头针(注释)

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{

//如果Map页面中有大头针视图就复用原视图

MyAnnotationView *av = (MyAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"ann"];

if (!av) {

//如果MapView中没有大头针就通过自定义MKAnnotationView创建大头针图像

av = [[MyAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:@"ann"];

}

return av;

}

//给打头针添加点击事件

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view{

MyAnnotation *ann = view.annotation;

Business *b = ann.business;

UIViewController *vc = [[UIViewController alloc]init];

UIWebView *wv = [[UIWebView alloc]initWithFrame:vc.view.bounds];

NSURL *url = [NSURL URLWithString:b.path];

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

[wv loadRequest:request];

[vc.view addSubview:wv];

[self.navigationController pushViewController:vc animated:YES];

}

7)在自定义MKAnnotationView中自定义Annotation的图像

打initWithFrame

将其修改为

- (instancetype)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier

{

self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];

if (self) {

<#statements#>

}

return self;

}

在其中修改大头针的图片、添加其他信息

- (instancetype)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier

{

self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];

if (self) {

//修改大头针的样式

//        self.image = [UIImage imageNamed:@"index_map.png"];

//通过大头针提取信息,并将信息显示出来,

MyAnnotation *ann = annotation;

Business *b = ann.business;

NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:b.img]];

self.image = [UIImage imageWithData:data];

//设置大头针View的尺寸

self.bounds = CGRectMake(0, 0, 50, 50);

}

return self;

}

时间: 2024-12-29 17:43:41

蓝懿教育九月二十四日记录的相关文章

蓝懿教育九月八日记录

今天是九月八日,又是一个练习日.今天起得很晚,有些懈怠了.也许和最近休息的有点多有关,人变得有些懒了.又像回到了从前懒散得样子.也许是最近看电脑看的太多总感觉眼睛很涩.懒人永远都是事多,为自己找着各种借口. 但还是要自己想办法解决问题.强制自己继续努力.今天下午近晚上才开始进入状态.复习了下老师前几天将的数组和字符串.越复习越发现自己忘记的越多.希望随着时间推移,我不会跟不上. 最后记录下部分复习的内容: 判断数组中是否包含某个对象 if ([names containsObject:@"赵六&

蓝懿教育九月七日记录

昨天是九月七日.天朗气清,惠风和畅,是一个适合出游的好日子.可惜我没有时间出去.只能继续在教室中学习过着没有假期的生活.说实话感觉每天都只生活在学校与宿舍这两点一线的狭小空间中真是一种别样的蜗居生活.只希望我今天的付出能够获得明日的收获.让以后的日子能不碌碌无为. 最后记录下昨天的收获.昨天做了两个小东西 一个是记忆力测试器 主要是学了如何添加text数组,和拼接数字调整数字的位数.另一则是打地鼠游戏,这个则是主要练习昨天刚讲过的正向传值和反向传值.

蓝懿教育九月二十八日记录

//开始触摸 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ //    NSSet集合  和数组类似 都是用来装多个对象的  但是区别是set无序 //获取set集合中任意对象 [touches anyObject]; //把set集合转成array数组 NSArray *arr = touches.allObjects; UITouch *t = [touches anyObject]; CGPoint p =

蓝懿教育九月二十五日记录

<<FMDB1.zip>> http://blog.csdn.net/xyz_lmn/article/details/9312837 .h文件 #import <UIKit/UIKit.h> #import "FMDatabase.h" @interface FMDBViewController : UIViewController { //    全局变量 FMDatabase *db; NSString *database_path; } @en

蓝懿教育九月二十七日记录

将VIew移动做成动画效果    这种动画效果没有中间的位移 可以添加动画的View属性center,frame,alpha,transform , backgroundColor //继续做消失的动画 [UIView animateWithDuration:1 animations:^{ iv.alpha = 0; } completion:^(BOOL finished) { //完成动画后执行 可以继续添加 [iv removeFromSuperview]; }]; - (void)vie

蓝懿教育九月十九日记录

1.本地地址解析 NSString*path =@"/Users/ivan/Desktop/movie.txt"; //表示二进制的对象    NSData *data = [NSData dataWithContentsOfFile:path]; NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];       NSDictionary *resultDic = d

蓝懿教育九月二十二日记录

一.欢迎页面3个全屏图片 第三个图片可以点击,进入"首页": 一运行起来就是一个ViewController ,里面是全屏的ScrollerView 与代码关联.代码: - (void)viewDidLoad{    [super viewDidLoad];      for (int i=1; i<4; i++) {        UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake((i-1)*320, 0, 32

蓝懿教育九月十八日记录

2.storyboard 自定义cell 1)先创建TableViewController,创建继承UITableVIewCell的类 2)将Main.storyboard中页面的cell与自定义cell类关联,将cell的Custom Class中的Class填写自定义cell的类名,在TableVIew Cell中填写identifier 3)在TableViewController类中用自定义cell类创建cell并改写Identifier的值,使其与自定义cell的identifier对

蓝懿教育第十四日记录

今天是九月六日.来到蓝懿的第十四天.刘老师没有今天没有讲新课 ,而是带领我们做了一个高级版计算器.前两天我也做过两版简单的计算器.但今天听了老师的讲解,发现自己曾经的代码有许多过于繁琐的地方.很多知道改进的地方.还有就是发现前两天讲得代码已经有些淡忘了.例如如何替换数组中的数据 和如何拼接改变字符串.而今天收获的最大的就是如何实现优先级的计算. for (int i=0; i<self.operators.count; i++) { NSString *operator = self.opera