MapKit框架的使用

1:MapKit框架使用前提

导入框架

导入主头文件

#import <MapKit/MapKit.h>

MapKit框架使用须知

MapKit框架中所有数据类型的前缀都是MK

MapKit有一个比较重要的UI控件 :MKMapView,专门用于地图显示

2:跟踪显示用户的位置

设置MKMapView的userTrackingMode属性可以跟踪显示用户的当前位置

MKUserTrackingModeNone :不跟踪用户的位置

MKUserTrackingModeFollow :跟踪并在地图上显示用户的当前位置

MKUserTrackingModeFollowWithHeading :跟踪并在地图上显示用户的当前位置,地图会跟随用户的前进方向进行旋转

下图是跟踪效果

蓝色发光圆点就是用户的当前位置

蓝色发光原点,专业术语叫做“大头针”

3:地图的类型

可以通过设置MKMapView的mapViewType设置地图类型

MKMapTypeStandard :普通地图(左图)

MKMapTypeSatellite :卫星云图 (中图)

MKMapTypeHybrid :普通地图覆盖于卫星云图之上(右图)

4:MKMapView的代理

MKMapView可以设置一个代理对象,用来监听地图的相关行为

常见的代理方法有

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

调用非常频繁,不断监测用户的当前位置

每次调用,都会把用户的最新位置(userLocation参数)传进来

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

地图的显示区域即将发生改变的时候调用

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

地图的显示区域已经发生改变的时候调用

5:MKUserLocation

MKUserLocation其实是个大头针模型,包括以下属性

@property (nonatomic, copy) NSString *title;

显示在大头针上的标题

@property (nonatomic, copy) NSString *subtitle;

显示在大头针上的子标题

@property (readonly, nonatomic) CLLocation *location;

地理位置信息

6:设置地图的显示

通过MKMapView的下列方法,可以设置地图显示的位置和区域

设置地图的中心点位置

@property (nonatomic) CLLocationCoordinate2D centerCoordinate;

- (void)setCenterCoordinate:(CLLocationCoordinate2D)coordinate animated:(BOOL)animated;

设置地图的显示区域

@property (nonatomic) MKCoordinateRegion region;

- (void)setRegion:(MKCoordinateRegion)region animated:(BOOL)animated;

7:MKCoordinateRegion

nMKCoordinateRegion是一个用来表示区域的结构体,定义如下

typedef struct {

CLLocationCoordinate2D center; // 区域的中心点位置

MKCoordinateSpan span; // 区域的跨度

} MKCoordinateRegion;

nMKCoordinateSpan的定义

typedef struct {

CLLocationDegrees latitudeDelta; // 纬度跨度

CLLocationDegrees longitudeDelta; // 经度跨度

} MKCoordinateSpan;

8:大头针

8.1:大头针的基本操作

添加一个大头针

- (void)addAnnotation:(id <MKAnnotation>)annotation;

添加多个大头针

- (void)addAnnotations:(NSArray *)annotations;

移除一个大头针

- (void)removeAnnotation:(id <MKAnnotation>)annotation;

移除多个大头针

- (void)removeAnnotations:(NSArray *)annotations;

(id <MKAnnotation>)annotation参数是什么东西?

大头针模型对象:用来封装大头针的数据,比如大头针的位置、标题、子标题等数据

8.2:大头针模型

新建一个大头针模型类

#import <MapKit/MapKit.h>

@interface MJTuangouAnnotation : NSObject <MKAnnotation>

/** 坐标位置 */

@property (nonatomic, assign) CLLocationCoordinate2D coordinate;

/** 标题 */

@property (nonatomic, copy) NSString *title;

/** 子标题 */

@property (nonatomic, copy) NSString *subtitle;

@end

8.3:添加大头针

MJTuangouAnnotation *anno = [[MJTuangouAnnotation alloc] init];

anno.title = @"传智播客iOS学院";

anno.subtitle = @“全部课程15折,会员20折,老学员30折";

anno.coordinate = CLLocationCoordinate2DMake(40, 116);

[self.mapView addAnnotation:anno];

8.4:自定义大头针

很多情况下,需要自定义大头针的显示样式,比如显示一张图片

8.5:自定义大头针

如何自定义大头针

设置MKMapView的代理

实现下面的代理方法,返回大头针控件

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation;

根据传进来的(id <MKAnnotation>)annotation参数创建并返回对应的大头针控件

代理方法的使用注意

如果返回nil,显示出来的大头针就采取系统的默认样式

标识用户位置的蓝色发光圆点,它也是一个大头针,当显示这个大头针时,也会调用代理方法

因此,需要在代理方法中分清楚(id <MKAnnotation>)annotation参数代表自定义的大头针还是蓝色发光圆点

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation

{

// 判断annotation的类型

if (![annotation isKindOfClass:[MJTuangouAnnotation class]]) return nil;

// 创建MKAnnotationView

static NSString *ID = @"tuangou";

MKAnnotationView *annoView = [mapView dequeueReusableAnnotationViewWithIdentifier:ID];

if (annoView == nil) {

annoView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:ID];

annoView.canShowCallout = YES;

}

// 传递模型数据

annoView.annotation = annotation;

// 设置图片

MJTuangouAnnotation *tuangouAnnotation = annotation;

annoView.image = [UIImage imageNamed:tuangouAnnotation.icon];

return annoView;

}

9:MKAnnotationView

地图上的大头针控件是MKAnnotationView

MKAnnotationView的属性

@property (nonatomic, strong) id <MKAnnotation> annotation;

大头针模型

@property (nonatomic, strong) UIImage *image;

显示的图片

@property (nonatomic) BOOL canShowCallout;

是否显示标注

@property (nonatomic) CGPoint calloutOffset;

标注的偏移量

@property (strong, nonatomic) UIView *rightCalloutAccessoryView;

标注右边显示什么控件

@property (strong, nonatomic) UIView *leftCalloutAccessoryView;

标注左边显示什么控件

10:MKPinAnnotationView

MKPinAnnotationView是MKAnnotationView的子类

MKPinAnnotationView比MKAnnotationView多了2个属性

@property (nonatomic) MKPinAnnotationColor pinColor;

大头针颜色

@property (nonatomic) BOOL animatesDrop;

大头针第一次显示时是否从天而降

时间: 2024-10-10 09:58:20

MapKit框架的使用的相关文章

IOS中MapKit框架使用地图的显示

1.导入主头文件 #import <MapKit/MapKit.h> MapKit框架使用须知 MapKit框架中所有数据类型的前缀都是MK MapKit有一个比较重要的UI控件 :MKMapView,专门用于地图显示 2. 设置MKMapView的userTrackingMode属性可以跟踪显示用户的当前位置 MKUserTrackingModeNone :不跟踪用户的位置 MKUserTrackingModeFollow :跟踪并在地图上显示用户的当前位置 MKUserTrackingMo

iOS地图----MapKit框架

1.MapKit框架使用前提 ①导入框架 ②导入主头文件 #import <MapKit/MapKit.h> ③MapKit框架使用须知 MapKit框架中所有数据类型的前缀都是MK MapKit有一个比较重要的UI控件,专门用于地图显示 ④MapKit框架包含CLLocation 2.设置地图的类型 可以通过设置MKMapView的mapType设置地图类型 typedef enum : NSUInteger { MKMapTypeStandard , 标准(默认) MKMapTypeSat

iOS核心笔记—MapKit框架-基础

1.MapKit框架简介: ?了解:MapKit框架使用须知:①.MapKit框架中所有的数据类型的前缀都是MK:②.需要导入#import <MapKit/MapKit.h>头文件:③.MapKit框架中有一个非常重要的UI控件:MKMapView,专门用于地图显示,例如:大头针.路线.覆盖层展示等(着重界面展示). 1-1.地图设置: 1-1-1.设置地图显示类型: 地图类型: 地图枚举 地图类型 MKMapTypeStandard 普通地图 MKMapTypeSatellite 卫星云图

iOS学习笔记20-地图(二)MapKit框架

一.地图开发介绍 从iOS6.0开始地图数据不再由谷歌驱动,而是改用自家地图,当然在国内它的数据是由高德地图提供的. 在iOS中进行地图开发主要有三种方式: 利用MapKit框架进行地图开发,利用这种方式可以对地图进行精准的控制 调用苹果官方自带的地图应用,主要用于一些简单的地图应用,无法精确控制 使用第三方地图开发SDK库 用得最多的还是MapKit,所以这节就只讲MapKit的使用. 二.MapKit核心类 MapKit的核心类为地图展示控件MKMapView,以下是常用的属性.对象方法以及

使用MapKit框架(持续更新)

使用MapKit框架 地图显示 最简单显示地图的代码: // // RootViewController.m // CoreLocation // // Copyright (c) 2014年 Y.X. All rights reserved. // #import "RootViewController.h" #import <MapKit/MapKit.h> @interface RootViewController () @end @implementation Ro

iOS核心笔记—MapKit框架-导航

1.导航简介: ?了解:导航,简单来说,就是根据用户指定的位置,进行路线规划:然后根据用户在行走过程中,实时的给出指引提示. 1-1.iOS导航实现方案: 方案 详细说明 方案一 将需要导航的位置传递给系统的地图APP进行导航 方案二 发送网络请求到Apple服务器/公司服务器获取导航数据,然后,手动绘制导航路线 方案三 利用第三方SDK实现导航功能(百度地图) ?说明:通常如果需要手动绘制导航路线,都是向Apple服务器发送请求.获取导航信息:此处,只对方案一.方案二做详细介绍,方案三将单独说

【iOS开发-110】MapKit框架的主要类MKMapView以及代理方法,大头针的使用addAnnotation

#import "ViewController.h" #import <MapKit/MapKit.h> #import <CoreLocation/CoreLocation.h> @interface ViewController ()<MKMapViewDelegate> @property(nonatomic,strong) CLLocationManager *locMgr; @property (weak, nonatomic) IBOut

MapKit --- iOS中的地图框架

iOS中可以简单地使用MapKit框架来进行地图的相关开发工作. 基本步骤: import MapKit ViewController 继承 MKMapViewDelegate 协议 添加一个MapKit View 准备一个相应的region信息, 即以哪为中心, 方圆多少范围 在mapView中设置该region即可 添加地理位置的标注annotation 地理位置标注添加到map中的相应操作. ViewController import UIKit import MapKit class V

iOS的基本框架

在iOS中框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像.声音文件等其他资源.共享资源库定义应用程序可以调用的函数和方法.    iOS为应用程序开发提供了许多可使用的框架,并构成IOS操作系统的层次架构,分为四层,从上到下依次为:Cocoa Touch Layer(触摸UI层).MediaLayer(媒体层).Core Services Layer(核心服务层).Core OS Layer(核心OS层). 低层次框架提供IOS的基本服务和技术,高层次框架建立在