1、导入库
CoreLocation、 MapKit
2、在AppDelegate开启定位功能
- (void)startLocation
{
    //1.定位管理器
    _locationManager = [[CLLocationManager alloc] init];
    if (![CLLocationManager locationServicesEnabled]) {
        MyLog(@"定位服务当前可能尚未打开,请设置打开!");
        return;
    }
    //2.如果没有授权则请求用户授权
    if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusNotDetermined) {
        [_locationManager requestWhenInUseAuthorization];
    } else if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse) {
        //2.1设置代理
        _locationManager.delegate = self;
        //2.2设置定位精度
        _locationManager.desiredAccuracy = kCLLocationAccuracyBest;
        //2.3设置定位频率
        _locationManager.distanceFilter = 100.0;
        //2.4开启定位功能
        [_locationManager startUpdatingLocation];
    }
}

#pragma mark CoreLocation代理
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations
{
    CLLocation *location = [locations firstObject];
    CLLocationCoordinate2D coordinate = location.coordinate;

    MyLog(@"经度:%f,纬度:%f,海拔:%f,航向:%f,行走速度:%f",coordinate.longitude,coordinate.latitude,location.altitude,location.course,location.speed);
}
3、坐标转地址
- (void)getAddressByLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude
{
    //反地理编码
    CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
    CLGeocoder *geoCode = [[CLGeocoder alloc] init];
    [geoCode reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
        CLPlacemark *placeMark = [placemarks firstObject];
        NSDictionary *addressDict = placeMark.addressDictionary;
        NSString *name = [addressDict objectForKey:@"Name"];
        MyLog(@"详细信息:%@",name);
        _addressTextField.text = name;
    }];
}
4、调用地图功能
#pragma mark 添加地图控件
- (void)addMapKit
{
    //1.初始化及设置代理
    _mapView = [[MKMapView alloc] initWithFrame:self.view.bounds];
    _mapView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
    _mapView.showsUserLocation = YES;
    _mapView.delegate = self;
    [self.view addSubview:_mapView];
   
    //2.请求定位服务
    _locationManager = [[CLLocationManager alloc] init];
    if(![CLLocationManager locationServicesEnabled]||[CLLocationManager authorizationStatus]!=kCLAuthorizationStatusAuthorizedWhenInUse){
        [_locationManager requestWhenInUseAuthorization];
    }
   
    //3.用户位置跟踪
    _mapView.userTrackingMode = MKUserTrackingModeFollow;
   
    //4.设置地图类型
    _mapView.mapType = MKMapTypeStandard;
   
    //5.添加大头针
    [self addAnnotation];
}
#pragma mark 添加大头针
- (void)addAnnotation
{
    CLLocationCoordinate2D shopCoordinate = CLLocationCoordinate2DMake(_latitude, _longitude);
    MKPointAnnotation *annotation = [[MKPointAnnotation alloc] init];
    annotation.coordinate = shopCoordinate;
    annotation.title = _name;
    [_mapView addAnnotation:annotation];
}

#pragma mark - MapView代理
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    if (_mapView) return;
   
    //1.位置
    CLLocationCoordinate2D center = userLocation.location.coordinate;
   
    //2.跨度
    MKCoordinateRegion region = MKCoordinateRegionMake(center, kSpan);
   
    //3.区域
    [mapView setRegion:region animated:YES];
   
    _mapView = mapView;
}

#pragma mark 自定义大头针图片
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
    if ([annotation isKindOfClass:[MKPointAnnotation class]]){
        MKPinAnnotationView *newAnnotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"myAnnotation"];
        newAnnotationView.pinColor = MKPinAnnotationColorPurple;
        // 设置该标注点动画显示
        newAnnotationView.animatesDrop = YES;
        newAnnotationView.annotation = annotation;
        //把大头针换成别的图片
        newAnnotationView.image = [UIImage imageNamed:@"my_mapLocate_annotation.png"];
        return newAnnotationView;
    }
    return nil;

}

IOS 自带地图开发相关推荐

  1. iOS自带地图纠偏问题

    ----纠偏 篇----.. 1. 涉及接口:<CoreLocation/CoreLocation.h> 2. 核心代码解读: if ([CLLocationManager locatio ...

  2. iOS 自带地图详解

    1.配置环境: 1>iOS9为了增强数据访问安全,将所有的http请求都改为了https,为了能够在iOS9中正常使用地图SDK,请在"Info.plist"中进行如下配置, ...

  3. iOS 自带地图定位失败原因 Code=0和Code=1区别

    2019独角兽企业重金招聘Python工程师标准>>> 1:没有选择位置 Error Domain=kCLErrorDomain Code=0 "The operation ...

  4. ios开发中如何调用苹果自带地图导航

    前段时间一直在赶项目,在外包公司工作就是命苦,天天加班不说,工作都是和工期合同挂钩的,稍微逾期就有可能被扣奖金,不谈这些伤脑筋的事情了,让我们说说iOS开发中如何调用苹果手机自带的地图. 学习如逆水行 ...

  5. iOS开发之利用苹果系统自带地图进行地图开发

    了解更多关于移动开发,欢迎到悦卓3G孵化园:http://www.91train.com iOS中有一个系统自带的 完整的一套地图框架--MapKit.Framework和CoreLocation.F ...

  6. Android 百度地图开发(三)--- 实现比例尺功能和替换自带的缩放组件

    转载请注明出处:http://blog.csdn.net/xiaanming/article/details/11821523 貌似有些天没有写博客了,前段时间在忙找工作的事,面试了几家公司,表示反响 ...

  7. 在iOS中进行Mapbox地图开发杂谈

    最近因项目需要,在app中要集成Mapbox,并且要能与苹果地图切换使用.从最早认识Mapbox到最终集成完毕,中间有一些断断续续,但总的时间也不算短了,关于这方面的资料其实是比较少的,能参考的基本都 ...

  8. IOS 苹果自带地图、百度地图、高德地图打开方式

    //手机自带地图 //当前位置 MKMapItem *mylocation = [MKMapItemmapItemForCurrentLocation]; //前面填写纬度 CLLocationCoo ...

  9. 高德离线数据api_使用离线地图-创建地图-开发指南-iOS 地图SDK | 高德地图API

    高德3D 地图 SDK支持离线地图功能.(2D 地图 SDK 不支持离线地图功能) 离线地图可满足在无网络环境下查看地图信息的需求,在设备本地有离线地图数据的情况下,SDK 会优先加载离线地图. 离线 ...

最新文章

  1. spark on yarn任务提交及运行完整流程图
  2. 基于Spring Boot的“课程设计”的设计与实现
  3. 【Java】用for循环实现1+2+3......+100 =
  4. mybatis分页的一种解决方案
  5. 电商购物APP UI 模板素材,充满时尚感的设计
  6. 资源日历 踩坑记(二)
  7. 100%抄袭!ICLR 2022投稿论文剽窃两篇顶会,程序主席放「实锤」严词拒稿!
  8. 如何到top5%?NLP文本分类和情感分析竞赛总结
  9. 一个关于全局变量的问题
  10. 第二章 this全面解析
  11. Windows10添加英文输入法
  12. 图解机器学习:分类模型性能评估指标
  13. 计算机微信接收excel打不开怎么回事,电脑端微信打不开怎么解决
  14. Linux下Tomcat项目启动报错
  15. 做业务的程序猿如何提升技能?
  16. AcWing 342. 道路与航线 (双端队列广搜问题,SPFA)
  17. C++“读取“大量数据时--快读
  18. MG本地服务器如何改ip
  19. css中的min-height、max-height、min-width、max-width
  20. 重置功能怎么实现java_java实现忘记密码功能

热门文章

  1. CSS-背景图片 | background-image
  2. 微信开发之——接口调用频率xianzh
  3. docker 构建推送到阿里云仓库失败
  4. [codeforces 1324D] Pair of Topics 分而治之+排列组合
  5. iOS应用开发入门(1)——第一个iOS应用
  6. java开发测试工具
  7. Excel VBA将所有Sheet重命名为单元格a1的名称
  8. CSS盒子边框(border)样式综合样式
  9. [生存志] 第22节 历代大事件概览 五代十国
  10. 如何使html中的图片居中