iOS 地图

作者: Ljson | 来源:发表于2015-08-07 20:19 被阅读516次

CoreLocation的简单使用:

在地图之前,首先会讲到以个很重要的框架<CoreLocation>,顾名思义,就是用来定位的框架。

  1. 获取用户当前的位置:
    - (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    //创建位置管理对象
    _locationManager = [[CLLocationManager alloc]init];
    //加载到位置就会调用代理方法
    _locationManager.delegate = self;
    }
    //加载到位置之后的回调
    - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
    {
    if (!locations.count) return;
    //在加载到得绘制当中取出最近获取的位置
    CLLocation *currentLocation = [locations lastObject];
    //如果仅仅获取下位置,在拿到位置之后就可以停止更新位置了,毕竟定位耗电。
    [manager stopUpdatingLocation];
    }
    • 注意,iOS8之后获取用户位置之前要配置好info.plist并且要申请用户授权
      • 添加字段:NSLocationWhenInUseDescription或者NSLocationAlwaysUsageDescription

      • 请求用户的授权,要什么类别的授权,前面就添加什么样的字段

         //只有用户是未决定状态才需要申请授权。
         //如果用户已经拒绝授权,这里请求也不会弹框
        if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) {
           [self.manager requestAlwaysAuthorization];
          }
        
  2. 地理编码及反地理编码:
  • 地理编码:根据字符串类型的地名,转换成CLPlaceMark对象:
    geocoder = [[CLGeocoder alloc]init];
    [self.geocoder geocodeAddressString:@"武汉" completionHandler:^(NSArray *placemarks, NSError *error) {
    }];
  • 反地理编码:根据地理位置,转换成CLPlaceMark对象:
    geocoder = [[CLGeocoder alloc]init];
    [self.geocoder reverseGeocodeLocation:userLocation.location completionHandler:^(NSArray *placemarks, NSError *error) {
    }];

MapKit的使用

地图中最核心的内容当然是<MapKit>了,里面已经包含了<CoreLocation>框架。最关键的是里面提供了一个叫MKMapView的控件,用来展示地图。

  1. 展示地图,导入库

    • 如果不导入库,可能会在storyboard上使用MKMapView时报错。
  2. 如何展示

    • iOS展示地图只需要将MapView用上就可以。
    • 其他的东西用到是再查一下。
  3. 添加大头针

    • 调用MapView的addAnnotation方法即可添加大头针模型;

    • 这里同样是MVC模式,我们只需要添加数据就好,苹果会根据我们传入的数据,展示UI

    • 通过代理方法返回展示的大头针视图,如果返回空,就会使用系统默认的大头针视图。

      -(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
      //系统会自己调用annoView的setAnnotation:方法,来个大头针视图设置模型数据。所以这里可以省略传递模型的一部。(但是要在annoView的setAnnotation:方法中做好相应的处理)
      return annoView;
      }
      
  4. 利用系统导航

    • 记得使用的是[MKMapItem openMapsWithItems:@[sourceItem,destinationItem] launchOptions:options];方法就行
  5. 画线

    MKDirections *directions = [[MKDirections alloc]initWithRequest:dirRequest];
     [directions calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error) {
         if (error || !response.routes.count) {
             return;
         }
         for (MKRoute * route in response.routes) {
             [self.mapView addOverlay:route.polyline];
         }
     }];
     //返回画好的线
     - (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay {
     MKPolylineRenderer *lineRenderer = [[MKPolylineRenderer alloc]initWithPolyline:overlay];
     lineRenderer.lineWidth = 5.0;
     lineRenderer.strokeColor = [UIColor redColor];
     return lineRenderer;
      } 
    

百度地图的使用

相比系统的地图,百度地图的功能更加亲民、使用。比如有poi搜索、公交线路搜索等等。

  1. 框架的导入
    • 看报什么错,找到对应的库,添加就好。或者直接对着文档,一次性把所有要添加的库都加上
  2. 基本的使用
    • 看着文档来,没什么难度。

相关文章

  • iOS Mapkit的使用

    【iOS】Mapkit的使用:地图显示、定位、大头针、气泡等 标签:iOS地图mapkit 1.显示地图 (1)首...

  • IOS地图定位导航

    title : IOS地图定位导航category : UI 地图定位导航 标签(空格分隔): IOS 概述 I...

  • iOS 使用高德地图正确姿势(三)

    iOS 使用高德地图正确姿势(一)iOS 使用高德地图正确姿势(二) 实现大头针始终在地图中心,拖动地图实时poi...

  • iOS原生地图 MKMapView 库翻译

    iOS原生地图 MKMapView 库翻译 作业部落存档 标签: iOS地图 引入系统库@import MapKi...

  • RN-地图导航

    调起百度网页地图路径导航 调起高德网页地图路径导航 iOS调起百度APP地图路径导航 iOS调起高德app地图路径...

  • ios ~ 高德地图:使用方法及示例

    相关文档【高德地图官方文档】:1、iOS 地图SDK[https://lbs.amap.com/api/ios-s...

  • MapKit框架的使用

    一. 地图的基本使用 1. 设置地图显示类型 地图的样式可以手动设置, 在iOS9.0之前有3种, iOS9.0之...

  • iOS 地图

    iOS 地图 基础 一 :定位 在 iOS 程序开发中 地图功能是普遍存在的,刚好最近都在研究地图的功能。总结一下...

  • MapKit框架的使用

    一. 地图的基本使用 1. 设置地图显示类型 地图的样式可以手动设置, 在iOS9.0之前有3种, iOS9.0之...

  • MapKit框架的使用

    一. 地图的基本使用 1. 设置地图显示类型 地图的样式可以手动设置, 在iOS9.0之前有3种, iOS9.0之...

网友评论

  • MichealRGB1017:哈哈哈哈哈哈哈哈哈哈哈哈哈哈我好好玩啊哈哈哈我好

本文标题:iOS 地图

本文链接:https://www.haomeiwen.com/subject/zduvqttx.html