• iOS开发之地图与定位


    ---恢复内容开始---

        地图和定位看上去是挺高大上一东西,其实用法比TableView简单多了,下面的Demo是用的iOS中自带的地图和定位,当然了也可以用第三方的来加载地图,比如百度地图啥的,在这就不赘述了。今天的博客主要是介绍MKMapView的使用,MapView的使用和其他组件的用法差不多,MapView用的是委托回调,在使用mapView的Controller中要实现MKMapViewDelegate协议,并注册委托回调,然后实现相应的回调方法即可。

    一,构建Demo的组件

    为了节省时间这个demo中的MapView是用Storyboard拖出来的,storyboard中的结构如下所示,上面是MKMapView用于显示地图,下面的labei用于显示当前经纬度:

    二,引入MKMapView要用的包,截图如下:

    三、编写标注模块的类

    1.首先解释一下标注模块是什么东西:标注模块就是显示当前地理位置的信息,下面图种绿色框中是标注模块:

    2.编写标注类,标注类必须实现MKAnnotation协议,MyAnnotation.h中的代码如下:

    3.实现协议MyAnnotation中的方法,titile返回的是标题,subTitle是子标题,代码如下:

     

    四、编写ViewController中的代码

    1.ViewController.h中要引入相应的包和实现相应的协议代码如下

     2.编写ViewController.m中的代码,实现协议中相应的委托回调方法,.m中的延展和初始化方法如下

    3.实现委托回调中的标注视图,代码截图如下:

    4.获取地理位置信息,代码如下:

    //实现协议中的方法获取坐标

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

    {

    //获取location

    CLLocation *location = userLocation.location;

    //通过location获取经纬度

    CLLocationCoordinate2D coordinate = location.coordinate;

    //显示经纬度

    [self mapPoint:coordinate];

    //标记范围

    MKCoordinateSpan span;

    span.latitudeDelta=0.1;

    span.longitudeDelta=0.1;

    MKCoordinateRegion region={coordinate ,span};

    [self.myMapView setRegion:region];

    __block __weak ViewController *copy_self = self;

    //解析地理位置

    CLGeocoder *geocoder = [[CLGeocoder alloc] init];

    [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {

    if (placemarks.count > 0) {

    //使用CLPlacemark解析地理位置

    CLPlacemark *placeMark = placemarks[0];

    NSDictionary *addressDictionary = placeMark.addressDictionary;

    //添加地图的标注

    MyAnnotation *annotation = [[MyAnnotation alloc] init];

    annotation.subTitle = addressDictionary[@"Name"];

    annotation.coordinate = coordinate;

    //添加标注信息

    [copy_self.myMapView addAnnotation:annotation];

    }

    }];

    }

    以上是Demo的所有代码,下面是运行的效果图:

    ---恢复内容结束---

  • 相关阅读:
    华为全联接大会2019,共创智能新高度
    CTDC2019首席技术官领袖峰会,AI赋能 智享5G
    2019全球体验设计峰会:体验赋能商业,创造更好体验
    全球闪存峰会旨在深化技术创新,增进闪存产业链上下游
    PyCon 2019火热来袭,与大数据、人工智能等专家一起探讨Python语言
    PHPConChina 2019 PHP开发者大会将于8月在上海举办!
    2019腾讯Live开发者大会(TLC),引领技术新趋势
    2019 HTML5深度应用开发实践
    2019年5G物联网关键技术与应用培训,了解5G网络发展现状及进展
    2019第二届企业云服务大会 -- 企业智变,云化未来
  • 原文地址:https://www.cnblogs.com/zhangz-1511/p/5118827.html
Copyright © 2020-2023  润新知