• 自定义大头针详情


    #import "ViewController.h"
    #import <MapKit/MapKit.h>
    #import <CoreLocation/CoreLocation.h>
    #import "CZMeiTuan.h"
    #import "CZTuanGouAnnotation.h"
    #import "CZDetailAnnotation.h"
    #import "MKTuangouAnnotationView.h"
    #import "CZDetailAnnotationView.h"
    @interface ViewController ()<MKMapViewDelegate>
    
    @property (nonatomic, strong) NSArray *allData; //数组中存放数据模型  美团的后台信息
    @property (weak, nonatomic) IBOutlet MKMapView *mapView;
    @end
    
    @implementation ViewController
    - (NSArray *)allData
    {
        //添加自定义大头针  模块
        //2颗
        
        //模拟服务器 的后台数据
        //采集  数据
        // 北京  119 39 ktv 广州 118 23  饭店
        if (!_allData) {
            CZMeiTuan *tg1 = [[CZMeiTuan alloc] init];
            tg1.title = @"饭店";
            tg1.desc = @"美食是人生的一大乐趣!";
            tg1.icon = @"category_1";
            tg1.image = @"fandian";
            tg1.coordinate = CLLocationCoordinate2DMake(39, 119);
            
            CZMeiTuan *tg2 = [[CZMeiTuan alloc] init];
            tg2.title = @"xxxKTV";
            tg2.desc = @"唱歌是人生的另一大乐趣!";
            tg2.icon = @"category_5";
            tg2.image = @"ktv";
            tg2.coordinate = CLLocationCoordinate2DMake(23, 118);
            _allData =  @[tg1,tg2];
        }
        return _allData;
    }
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        
    
        
        
        // 需求
        //根据后台数据  添加团购大头针  数组中有几个模型 就添加一个大头针视图 ->  添加大头针模型就会添加一个视图
        for (CZMeiTuan *meituan in self.allData) {
            
            CZTuanGouAnnotation *tuangouAnno = [[CZTuanGouAnnotation alloc]init];
            
            tuangouAnno.coordinate = meituan.coordinate;
            
            
            //tuangouAnno.imageName = meituan.icon;
            
            tuangouAnno.meiTuan  = meituan;
            
            [self.mapView addAnnotation:tuangouAnno];
            
        }
      
        
    }
    
    //每添加一个大头针模型 就会调用  返回一个对应的 大头针视图
    - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
    {
        
        if ([annotation isKindOfClass:[CZDetailAnnotation class]]) { //返回详情的大头针视图
            
            static NSString *ID = @"desc";
            
            CZDetailAnnotationView *detailAnnoView = (CZDetailAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:ID];
            
            if (detailAnnoView == nil) {
                detailAnnoView = [[CZDetailAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:ID];
                
            }
          
            //详情大头针模型给详情大头针视图赋值 meituan 团购数据信息
            CZDetailAnnotation *detailAnno = (CZDetailAnnotation *)annotation;
            detailAnnoView.meiTuan = detailAnno.meiTuan;
            
            
            return detailAnnoView;
        }else if ([annotation isKindOfClass:[CZTuanGouAnnotation class]])
        {
            static NSString *ID = @"anno";
            
            MKTuangouAnnotationView *annoView = (MKTuangouAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:ID];
            
            if (annoView == nil) {
                annoView = [[MKTuangouAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:ID];
                
            }
            
            CZTuanGouAnnotation *tuangouAnno = (CZTuanGouAnnotation *)annotation;
    
            
            annoView.image = [UIImage imageNamed:tuangouAnno.meiTuan.icon];
            
            return annoView;
          
        }else{
            
            return nil;
        }
        
        return nil;

    //

     //系统的大头针

             MKPinAnnotationView * pin =   [[MKPinAnnotationView alloc]init]; 系统的大头针 可以就该大头针的颜色 等等


    } //选中了一个大头针视图就会调用 参数2 点击的 那个视图 - (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view { //四个 角色 //团购大头针模型 团购大头针视 详情大头针模型 图 详情大头针视图 if ([view isKindOfClass:[MKTuangouAnnotationView class]]) { //再添加另一颗大头针 位置一样 CZTuanGouAnnotation *tuangouAnnoTap = (CZTuanGouAnnotation *)view.annotation; if (!tuangouAnnoTap.isShowDetail) { //不显示 才添加 //删除之前的所有大头针 详情模型 -> isShowDetail = NO 然后再添加新的 -> isShowDetail = YES //删除所有详情模型 for (id objc in self.mapView.annotations) { //详情模型 if ([objc isKindOfClass:[CZDetailAnnotation class]]) { [self.mapView removeAnnotation:objc]; }else{ } } //删除所有详情模型了 对于 团购模型来说 isShowDetail = NO for (id objc in self.mapView.annotations) { if ([objc isKindOfClass:[CZTuanGouAnnotation class]]) { CZTuanGouAnnotation *tuangouAnno = (CZTuanGouAnnotation *)objc; tuangouAnno.isShowDetail = NO; } } //创建详情模型 -> 团购 模型 应该置为 YES CZTuanGouAnnotation *tuangouAnno = (CZTuanGouAnnotation *)view.annotation; CZDetailAnnotation *detailAnno = [[CZDetailAnnotation alloc]init]; detailAnno.coordinate = tuangouAnno.coordinate; //MKTuangouAnnotationView *tuangouAnnoTationView = (MKTuangouAnnotationView *)view; //CZTuanGouAnnotation *annoTuangou = tuangouAnnoTationView.annotation; detailAnno.meiTuan = tuangouAnno.meiTuan; //详情大头针视图的bug //2.同时只能显示一个大头针详情视图 删除没必要的 //1.已经存在的大头针详情视图 没必要再添加一遍 //是否已经显示 没有显示才需要添加 -> 添加行为 考虑一下 //BOOL 来表达 团购大头针视图 的 详情是否展示 tuangouAnno.isShowDetail = YES; //添加模型 [self.mapView addAnnotation:detailAnno]; }else{ //已经 显示 } }else{ } }

      

  • 相关阅读:
    Android学习第三天
    Android学习第二天(从零开始手动创建项目)
    【k8s】Pod-containers
    【k8s】Pod-Guaranteed
    【k8s】Pod-Burstable
    【k8s】Pod-BestEffort
    【k8s】Pod-qosClass
    【k8s】Pod-readinessGates
    【k8s】Pod-containerStatuses
    【k8s】Pod-conditions
  • 原文地址:https://www.cnblogs.com/yuwei0911/p/5442556.html
Copyright © 2020-2023  润新知