ios --地图整理

来源:互联网 发布:知乎收藏夹不见了 编辑:程序博客网 时间:2024/05/08 12:11


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;

}

0 0
原创粉丝点击