ios --地图整理



iOS-UI知识点纵览

 

 

 

//知识点纵览

 

    //地图的使用

    //<1>显示地图

    // (1)库和头文件导入

    // (2)显示地图

    //<2>设置显示的位置和缩放

    //<3>添加大头针

    //<4>获取当前位置

   

    //其他功能

    //  知道两个经纬度, 如何计算这两个经纬度的距离

 

   

//知识点详解

 

       #import <MapKit/MapKit.h>

   

    //<1>显示地图

    //细节1: 直接设置则显示世界地图

    //细节2: 地图类型三种: 普通地图, 卫星地图, 混合地图

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

       //细节3: 需要遵守协议

    mapView.delegate = self;

    mapView.showsUserLocation = YES;

    //mapView.mapType = MKMapTypeStandard;

   

   

    //<2>设定显示的位置

    //定义经度纬度

    CLLocationCoordinate2D coordinate2d = CLLocationCoordinate2DMake(40.034827,116.311836);

    //设置缩放比例

    MKCoordinateSpan span = MKCoordinateSpanMake(0.1,0.1);

    //根据经纬度和缩放比例设置显示区域

    MKCoordinateRegion region = MKCoordinateRegionMake(coordinate2d,span);

    mapView.region = region;

    [self.view addSubview:mapView];

   

   

   

    //<3>显示大头针

       //需要定义一个遵守大头针协议的类

       //细节: 需遵守这个协议

       @interface CustomAnnotation : NSObject<MKAnnotation>

 

       -(id) initWithCoordinate:(CLLocationCoordinate2D)coords;

 

       @property (nonatomic, readonly) CLLocationCoordinate2Dcoordinate;

       @property (nonatomic, copy) NSString*title;

       @property (nonatomic, copy) NSString*subtitle;

       @end

 

       //类的实现

       @implementation CustomAnnotation

       -(id) initWithCoordinate:(CLLocationCoordinate2D)coords

       {

       if(self = [super init]) {

          _coordinate= coords;

       }

       returnself;

       }

       @end

 

 

       //设置大头针的位置

    CLLocationCoordinate2D coords = CLLocationCoordinate2DMake(40.034827,116.311836);

    CustomAnnotation *annotation = [[CustomAnnotationalloc] initWithCoordinate:coords];

    annotation.title = @"标题";

    annotation.subtitle = @"子标题";

    [mapView addAnnotation:annotation];

   

   

    //<4>获取当前位置

    locationManager = [[CLLocationManager alloc]init];

       //需要设置代理

    locationManager.delegate = self;

    [locationManager startUpdatingLocation];

 

 

//位置更新之后调用

- (void)locationManager:(CLLocationManager*)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation*)oldLocation {

   

    [locationManager stopUpdatingLocation];

   

    NSString *strLat = [NSString stringWithFormat:@"%.4f",newLocation.coordinate.latitude];

    NSString *strLng = [NSString stringWithFormat:@"%.4f",newLocation.coordinate.longitude];

    NSLog(@"Lat: %@  Lng: %@", strLat, strLng);

   

   

    //定位后直接移动到该区域

    CLLocationCoordinate2D coords = CLLocationCoordinate2DMake(newLocation.coordinate.latitude,newLocation.coordinate.longitude);

    float zoomLevel = 0.02;

    MKCoordinateRegion region = MKCoordinateRegionMake(coords,MKCoordinateSpanMake(zoomLevel,zoomLevel));

    [mapView setRegion:[mapView regionThatFits:region]animated:YES];

   

}

 

//位置更新错误之后执行

- (void)locationManager:(CLLocationManager*)manager didFailWithError:(NSError *)error {

    NSLog(@"locError:%@", error);

   

}

 

 

//其他功能

    //  知道两个经纬度, 如何计算这两个经纬度的距离

 

 

 

//计算两个点的距离

//  核心: 使用CLLocation类的对象的 distanceFromLocation:方法

+(double)distanceBetweenOrderBy:(double)lat1:(double)lat2 :(double)lng1 :(double)lng2{

    CLLocation* curLocation = [[CLLocation alloc]initWithLatitude:lat1 longitude:lng1];

    CLLocation* otherLocation = [[CLLocation alloc]initWithLatitude:lat2 longitude:lng2];

    double distance  = [curLocation distanceFromLocation:otherLocation];

    return distance;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值