iOS

OC 第三方 地图定位的使用

2017-08-01  本文已影响0人  J_mine

地图作为一种生活出行的必备工具为我们的生活提供了很多的便利 在此为大家讲述下 在ios开发中地图应用的使用
一 导入库文件


1.png

二 拖拽控件并关联

三 具体代码的实现
1 导入头文件

// 地图
#import <MapKit/MapKit.h>
//定位
#import <CoreLocation/CoreLocation.h>

2 在viewDidLoad 中 实现主要代码

- (void)viewDidLoad
{
    [super viewDidLoad];
    // 设置地图显示风格
    self.MpView.mapType = MKMapTypeStandard;
    // 设置地图缩放
    self.MpView.zoomEnabled = YES;
    // 设置地图滚动
    self.MpView.scrollEnabled = YES;
    // 设置地图旋转
    self.MpView.rotateEnabled = YES;
    //代理
    self.MpView.delegate = self;
    // 调用自己实现的方法设置地图的显示位置和区域
    [self locateToLatitude:23 longitude:113];
    // 打印
    NSLog(@"用于当前是否位于地图中:%d",self.MpView.userLocationVisible);
    
    
    
}

3 在按钮的方法中实现如下的方式

- (IBAction)goClicked:(id)sender
{
    
    // 关闭两个文本框的虚拟键盘
    [self.jingdu resignFirstResponder];
    [self.weidu resignFirstResponder];
    NSString* latitudeStr = self.jingdu.text;
    NSString* longtitudeStr = self.weidu.text;
    // 如果用户输入的经度、纬度不为空
    if (latitudeStr != nil && latitudeStr.length > 0
        && longtitudeStr != nil && longtitudeStr.length > 0)
    {
        // 调用自己实现的方法设置地图的显示位置和显示区域
        [self locateToLatitude:latitudeStr.floatValue
                     longitude:longtitudeStr.floatValue];
    }
    
}

4 进行封装

#pragma mark - 显示位置和显示区域 --封装
- (void)locateToLatitude:(CGFloat)latitude longitude:(CGFloat)longitude
{
    // 设置地图中心的经、纬度
    CLLocationCoordinate2D center = {latitude , longitude};
    // 也可以使用如下方式设置经、纬度
    //
    center.latitude = latitude;
    //
    center.longitude = longitude;
    // 设置地图显示的范围,
    MKCoordinateSpan span;
    // 地图显示范围越小,细节越清楚
    span.latitudeDelta = 0.01;
    span.longitudeDelta = 0.01;
    // 创建MKCoordinateRegion对象,该对象代表了地图的显示中心和显示范围。
    MKCoordinateRegion region = {center,span};
    // 设置当前地图的显示中心和显示范围
    [self.MpView setRegion:region animated:YES];
}

5 写下代理方法 在代理方法中<MKMapViewDelegate>直接粘贴即可(可写可不写)

#pragma mark -MKMapViewDelegate(地图代理)
// MKMapViewDelegate协议中的方法,当MKMapView显示区域将要发生改变时激发该方法
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
{
    NSLog(@"地图控件的显示区域将要发生改变!");
}
// MKMapViewDelegate协议中的方法,当MKMapView显示区域改变完成时激发该方法
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animatedx
{
    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(@"地图控件渲染地图完成!");
}

上一篇下一篇

猜你喜欢

热点阅读