zoukankan      html  css  js  c++  java
  • 位置与地图(三)给地图加入覆盖层

    - (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;
    }
    */
  • 相关阅读:
    【转载】产品经理如何行之有效的提高执行力
    【转载】20个2013年最值得关注的网页设计趋势
    【转载】HTTP协议详解
    工作一年的心得与体会
    【转载】什么是SVG
    【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
    【转载】前台页面优化全攻略-系列博文
    flink的checkpoint
    HBase概述
    牛客题霸--跳台阶题解
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7159779.html
Copyright © 2011-2022 走看看