美文网首页
iOSMapKit地图简单使用

iOSMapKit地图简单使用

作者: 往日的时光 | 来源:发表于2017-08-31 21:30 被阅读0次

一、MapKit框架使用前提

1、导入框架

地图和地址

2、导入主头文件

#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>

MapKit框架使用须知:

MapKit框架中所有数据类型的前缀都是MK
MapKit有一个比较重要的UI控件 :MKMapView,专门用于地图显示

二、显示地图的几种效果

    MKMapTypeStandard  // 标准地图
    MKMapTypeSatellite, // 卫星云图
    MKMapTypeHybrid, // 混合(在卫星云图上加了标准地图的覆盖层)
    MKMapTypeSatelliteFlyover NS_ENUM_AVAILABLE(10_11, 9_0), // 3D立体
    MKMapTypeHybridFlyover NS_ENUM_AVAILABLE(10_11, 9_0), // 3D混合
 设置地图显示样式(必须注意,设置时 注意对应的版本)

下面是标准地图效果图,当然大家也可以试试其他几种:

使用的拖拽控件的效果

接下来上代码

#import "ViewController.h"
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
@interface ViewController ()<MKMapViewDelegate>

@property(nonatomic,strong)MKMapView *mapView;
@property (weak, nonatomic) IBOutlet UITextField *textwei;

@property (weak, nonatomic) IBOutlet UITextField *textjing;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
//    self.view.backgroundColor = [UIColor whiteColor];
    
    self.mapView = [[MKMapView alloc]initWithFrame:CGRectMake(0, 70, self.view.frame.size.width, self.view.frame.size.height)];
    //    MKMapTypeStandard = 0, // 标准地图
    //    MKMapTypeSatellite, // 卫星云图
    //    MKMapTypeHybrid, // 混合(在卫星云图上加了标准地图的覆盖层)
    //    MKMapTypeSatelliteFlyover NS_ENUM_AVAILABLE(10_11, 9_0), // 3D立体
    //    MKMapTypeHybridFlyover NS_ENUM_AVAILABLE(10_11, 9_0), // 3D混合
    // 设置地图显示样式(必须注意,设置时 注意对应的版本)
    self.mapView.mapType = MKMapTypeStandard;
    
    // 设置地图是否可以缩放
    self.mapView.zoomEnabled = YES;
    //是否可以滚动
    self.mapView.scrollEnabled = YES;
    //旋转
    self.mapView.rotateEnabled = YES;
    //设置显示用户当前位置
    self.mapView.showsUserLocation = YES;
    //将 mapview 添加到视图
    [self.view addSubview:self.mapView];
    // 显示用户位置, 但是地图并不会自动放大到合适比例
    self.mapView.showsUserLocation = YES;
    // 为MKMapView设置delegate
    self.mapView.delegate = self;
    //设置经纬度(北京的经度 39.9,纬度:116.3)
    [self locateToLatitude:23.126272 longitude:113.395568];
}
- (IBAction)btn:(UIButton *)sender {
    
    NSString* latitudeStr = self.textwei.text;
    NSString* longtitudeStr = self.textjing.text;
    // 如果用户输入的经度、纬度不为空
    if (latitudeStr != nil && latitudeStr.length > 0
        && longtitudeStr != nil && longtitudeStr.length > 0)
    {
        // 调用自己实现的方法设置地图的显示位置和显示区域
        [self locateToLatitude:latitudeStr.floatValue
                     longitude:longtitudeStr.floatValue];
    }
}

- (void)locateToLatitude:(CGFloat)latitude longitude:(CGFloat)longitude
{
    // 设置地图中心的经、纬度
    CLLocationCoordinate2D center = {latitude , longitude};
    // 设置地图显示的范围
    MKCoordinateSpan span;
    // 地图显示范围越小,细节越清楚
    span.latitudeDelta = 0.01;
    span.longitudeDelta = 0.01;
    // 创建MKCoordinateRegion对象,该对象代表了地图的显示中心和显示范围。
    MKCoordinateRegion region = {center,span};
    // 设置当前地图的显示中心和显示范围
    [self.mapView setRegion:region animated:YES];
}



@end

<MKMapViewDelegate>代理有7种方法:

// 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(@"地图控件渲染地图完成!");
}

相关文章

  • iOSMapKit地图简单使用

    一、MapKit框架使用前提 1、导入框架 2、导入主头文件 MapKit框架使用须知: MapKit框架中所有数...

  • iOS地图导航功能实现

    最简单快捷的方法使用高德地图uri,高德地图uri的具体使用可在高德地图官方网站看,使用非常简单 简单贴下部分代码...

  • 地图的简单使用

    一.注册百度地图账号 http://lbsyun.baidu.com 二.点击控制台,创建应用 1.填写应用名称,...

  • 0825_基于lbs的服务应用开发

    新内容(基于lbs的服务应用开发) lbs公开接口: 百度地图 腾讯地图 Google地图 百度地图接口简单使用 ...

  • 小程序map

    资料详情。。。 地图组件使用起来也很简单。 .wxml 参数列表及说明如下: 除了显示基本地图,还可以在地图上添加...

  • 地图的简单使用(一)

    显示效果图 在使用地图的时候应先导入#import MKMapView是地图视...

  • iOS-系统原生的地图和定位简单使用

    iOS工程中简单使用原生的地图框架目录:一、使用MKMap控件二、根据地址定位三、在地图上添加锚点四、导航 iOS...

  • echarts中国地图的使用

    1、下载引入js 2、地图使用 使用很简单直接贴代码,一目了然 具体的地图上的自定义图标可以去iconfont网站...

  • Android Study 之玩转高德地图二部曲[实现POI检索

    LZ-Says:前段时间更新了一篇关于高德地图的简单使用,其中主要包含实现地图显示以及定位简单功能,具体文章如下:...

  • swift 实现应用外导航(swift3.1)

    简单介绍下如何使用 swift 实现跳转到高德地图、百度地图、或系统自带地图导航,有了这个,妈妈再也不用担心app...

网友评论

      本文标题:iOSMapKit地图简单使用

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