美文网首页
IOS_MKMap地图显示+定位

IOS_MKMap地图显示+定位

作者: 烈酒暖心i | 来源:发表于2017-08-30 11:25 被阅读0次

    显示地图

    首先我们需要导入我们需要的框架

    如图所示

    库文件

    之后导入框架的头文件

    #import  <MapKit/MapKit.h>

    MKMapView  视图我们可以通过 storyboard 直接拖拽  (自己需要的大小,一般全屏)

    之后我们直接拖拽至控制器

    如图所示

    初始化MkMapView

    在此我们需要了解一下MkMapView的一些属性

    如下:(_DiTu  是我自己的一个对象"."后就是所谓的属性)

     设置地图的显示风格,属性后可以设置我们将要使用的地图类型

    _DiTu.mapType = MKMapTypeStandard;

    地图风格

    // 设置地图可缩放

    _DiTu.zoomEnabled = YES;

    地图缩放

    // 设置地图可滚动

    _DiTu.scrollEnabled = YES;

    地图可滚动

    // 设置地图可旋转

    _DiTu.rotateEnabled = YES;

    地图可旋转

    // 设置显示用户当前位置

    _Ditu.showsUserLocation = YES;

    设置显示用户位置

    // 为MKMapView设置delegate

    _Ditu.delegate = self;

    设置视图的Delegate

    <MKMapViewDelegate>(地图代理)

    // MKMapViewDelegate协议中的方法,当MKMapView显示区域将要发生改变时激发该方法

    (简单的理解就是 当我们滑动地图的时候  会给出我们提示 )   代码如下:

    // MKMapViewDelegate协议中的方法,当MKMapView显示区域将要发生改变时激发该方法

    - (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated

    {

    NSLog(@"地图控件的显示区域将要发生改变!");

    }

    // MKMapViewDelegate协议中的方法,当MKMapView显示区域改变完成时激发该方法

    - (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated

    {

    NSLog(@"地图控件的显示区域完成了改变!");

    }

    // MKMapViewDelegate协议中的方法,当MKMapView开始加载数据时激发该方法

    - (void) mapViewWillStartLoadingMap:(MKMapView *)mapView

    {

    NSLog(@"地图控件开始加载地图数据!");

    }

    // MKMapViewDelegate协议中的方法,当MKMapView加载数据完成时激发该方法

    - (void) mapViewDidFinishLoadingMap:(MKMapView *)mapView

    {

    NSLog(@"地图控件加载地图数据完成!");

    }

    // MKMapViewDelegate协议中的方法,当MKMapView加载数据失败时激发该方法

    - (void) mapViewDidFailLoadingMap:(MKMapView *)mapView

    withError:(NSError *)error

    {

    NSLog(@"地图控件加载地图数据发生错误,错误信息 %@!" , error);

    }

    // MKMapViewDelegate协议中的方法,当MKMapView开始渲染地图时激发该方法

    - (void) mapViewWillStartRenderingMap:(MKMapView *)mapView

    {

    NSLog(@"地图控件开始渲染地图!");

    }

    // MKMapViewDelegate协议中的方法,当MKMapView渲染地图完成时激发该方法

    - (void) mapViewDidFinishRenderingMap:(MKMapView *)mapView

    fullyRendered:(BOOL)fullyRendered

    {

    NSLog(@"地图控件渲染地图完成!");

    }

    现在我们运行程序  就可以正常显示我们的地图了

    如图所示:

    运行效果

    地图的定位 (显示位置和显示区域)

    在实现我们地图的基础上  我们实现定位效果

    定位效果就是我们  通过经纬度来实现  一个地点在地图上的显示效果

    下面使我们要用到的代码 以及属性:

    // 设置地图中心的经、纬度    (latitude,longitude  代表的是经纬度 我们可以给实际的数组即可  例如 CLLocationCoordinate2D center = {39.9 , 116.3};)

    CLLocationCoordinate2D center = {latitude , longitude};

    // 设置地图显示的范围,

    MKCoordinateSpan span;

    // 地图显示范围越小,细节越清楚

    span.latitudeDelta = 0.01;

    span.longitudeDelta = 0.01;

    // 创建MKCoordinateRegion对象,该对象代表了地图的显示中心和显示范围。

    MKCoordinateRegion region = {center,span};

    // 设置当前地图的显示中心和显示范围

    [_DiTu setRegion:region animated:YES];

     

    在我们做程序的过程中  经纬度肯定是要活的  所以我们可以通过输入框的方式灵活运用

    如图:

    通过拖拉的方式即可

      当我们输入完 经纬度之后   需要点击查询按钮 我们需要给按钮点击方法  设置代码

    注意 有的时候我们拖拉后的标签跟输入框以及按钮再次运行将不会显示,所以我们最好使用代码来实现输入框以及按钮!!!!!!!!(代码实现细节我想就不用再说了吧)

    我们可以把   显示位置和显示区域进行封装

    - (void)locateToLatitude:(CGFloat)JingDu longitude:(CGFloat)WeiDu

    {

    // 设置地图中心的经、纬度

    CLLocationCoordinate2D center = {JingDu,WeiDu};

    // 设置地图显示的范围,

    MKCoordinateSpan span;

    // 地图显示范围越小,细节越清楚

    span.latitudeDelta = 0.01;

    span.longitudeDelta = 0.01;

    // 创建MKCoordinateRegion对象,该对象代表了地图的显示中心和显示范围。

    MKCoordinateRegion region = {center,span};

    // 设置当前地图的显示中心和显示范围

    [_ShiTu setRegion:region animated:YES];

    }

    接下里就是按钮点击方法里面需要写的代码

    - (IBAction)ChaXun:(id)sender

    {

    NSString *J = _JingDu.text;

    NSString *W = _WeiDu.text;

    // 调用自己实现的方法设置地图的显示位置和显示区域

    [self locateToLatitude:W.floatValue longitude:J.floatValue];

    }

    现在我们就可以运行程序


    相关文章

      网友评论

          本文标题:IOS_MKMap地图显示+定位

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