• MapKit 添加大头针


    #import "ViewController.h"

    #import <MapKit/MapKit.h>

    #import "MYAnnotation.h"

     

    @interface ViewController ()<MKMapViewDelegate>

    @property(nonatomic,strong)CLLocationManager *mag;

     

     

    @property(nonatomic,strong)CLGeocoder *ceocoder;

    @property(nonatomic,strong)MKMapView*mapView;

     

     

    @end

     

    @implementation ViewController

     

    -(MKMapView*)mapView

    {

        if (!_mapView) {

            _mapView=[[MKMapView alloc]init];

        }

        return _mapView;

    }

     

     

    - (void)viewDidLoad {

        [super viewDidLoad];

        self.mag=[[CLLocationManager alloc]init];

        [self.mag requestAlwaysAuthorization];

        [self.mag requestWhenInUseAuthorization];

        

        //必须要记录要不不会进行用户权限验证

    //   CLLocationManager *mags=[[CLLocationManager alloc]init];

    //    [mags requestAlwaysAuthorization];

    //    [mags requestWhenInUseAuthorization];

     

        

        

        self.mapView.frame=self.view.bounds;

        //self.mapView.visibleMapRect=MKMapRectMake(20, 20, 200, 200);

         [self.view addSubview:self.mapView];

        

        //设置地图的代理

        self.mapView.delegate=self;

        self.mapView.showsUserLocation=YES;

        self.mapView.userTrackingMode=MKUserTrackingModeFollow;

       

        

     

    }

    //更新用户信息

    -(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation

    {

        [self.ceocoder reverseGeocodeLocation:userLocation.location completionHandler:^(NSArray *placemarks, NSError *error) {

            CLPlacemark *mark=[placemarks firstObject];

            userLocation.title=mark.name;

            userLocation.subtitle=mark.locality;

        }];

        //设置地图显示的区域

        CLLocationCoordinate2D center=userLocation.location.coordinate;

        //指定经纬度跨度

        MKCoordinateSpan Span=MKCoordinateSpanMake(15, 15);

        //将用户当前位置作为中心

        MKCoordinateRegion region=MKCoordinateRegionMake(center, Span);

        //设置显示区域

        [self.mapView setRegion:region animated:YES];

    }

     

    //加载大头针

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

    {

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

            return nil;

        }

        static NSString*ID=@"anno";

        MKPinAnnotationView *annotationView=(MKPinAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:ID];

        if (annotationView==nil) {

            annotationView=[[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:ID];

        }

        //设置大头针的颜色

        annotationView.pinColor=MKPinAnnotationColorPurple;

        //设置大头针动画

        annotationView.animatesDrop=YES;

        

        return annotationView;

    }

     

    -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

    {

        CGPoint point=[[touches anyObject] locationInView:self.mapView];

        CLLocationCoordinate2D coordinate=[self.mapView convertPoint:point toCoordinateFromView:self.mapView];

        //添加大头针

        MYAnnotation *anno=[[MYAnnotation alloc]init];

        anno.title=@"你想要的";

        anno.subtitle=@"可以用CLGeocoder解析出来位置";

        anno.coordinate=coordinate;

        [self.mapView addAnnotation:anno];

        

    } 

    @end

    #import <Foundation/Foundation.h>

    #import <MapKit/MapKit.h>

     

    @interface MYAnnotation : NSObject<MKAnnotation>

     

    @property(nonatomic,assign)CLLocationCoordinate2D coordinate;

     

    @property(nonatomic,copy)NSString*title;

    @property(nonatomic,copy)NSString*subtitle;

     

     

    @end

    @implementation MYAnnotation

     

    @end

  • 相关阅读:
    Convert、Parse、TryParse、(int)区别及可能引发性能问题
    重写、覆盖、重载、多态几个概念的区别分析
    计算机系统的硬件组成(转)
    如何选择Html.RenderPartial和Html.RenderAction
    位运算(转)
    Java程序员面试中的多线程问题
    请转到控制面板来配置或安装系统组件
    开篇
    DropDownList 不能有多个项被选定!
    有关rollup和cube的使用方法讨论
  • 原文地址:https://www.cnblogs.com/tangranyang/p/4655808.html
Copyright © 2020-2023  润新知