iOS地图相关知识总结

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #000000 }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC Semibold"; color: #ed719e }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #ed719e }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 14.0px "PingFang SC"; color: #000000 }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 14.0px Verdana; color: #000000 }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 14.0px Verdana; color: #000000; min-height: 17.0px }
p.p7 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }
p.p8 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #000000; min-height: 20.0px }
p.p9 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #000000 }
p.p10 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000; min-height: 16.0px }
p.p11 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 18.0px "PingFang SC"; color: #000000; min-height: 25.0px }
p.p12 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 18.0px Menlo; color: #000000; min-height: 21.0px }
p.p13 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 14.0px "PingFang SC"; color: #000000 }
p.p14 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; color: #000000; min-height: 25.0px }
p.p16 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 14.0px "PingFang SC"; color: #333333 }
p.p17 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 14.0px "PingFang SC"; color: #333333 }
p.p18 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 14.0px "PingFang SC"; color: #333333; min-height: 20.0px }
p.p19 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 13.0px "PingFang SC"; color: #333333 }
p.p20 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 14.0px Arial; color: #333333 }
p.p21 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 14.0px "PingFang SC"; color: #000000; min-height: 20.0px }
p.p22 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 14.0px Courier; color: #103bff }
p.p23 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 14.0px Courier; color: #494949 }
p.p24 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 14.0px "PingFang SC"; color: #103bff }
p.p25 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 16.0px; font: 14.0px Courier; color: #494949 }
p.p26 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 17.0px "Microsoft YaHei"; color: #333333 }
p.p27 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #008400 }
p.p28 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #4f8187 }
p.p29 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #703daa }
p.p30 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #008400 }
p.p31 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #3e1e81 }
p.p32 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 14.0px "PingFang SC"; color: #333333 }
p.p34 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 14.0px "PingFang SC"; color: #333333; min-height: 20.0px }
p.p35 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Menlo; color: #000000; min-height: 21.0px }
p.p36 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 14.0px "Microsoft YaHei"; color: #333333 }
p.p37 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px "Microsoft YaHei"; color: #333333; min-height: 22.0px }
li.li7 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #000000 }
li.li9 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #000000 }
li.li15 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 18.0px; font: 14.0px "PingFang SC"; color: #000000 }
li.li33 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "PingFang SC"; color: #333333; min-height: 20.0px }
span.s1 { }
span.s2 { font: 14.0px "PingFang SC" }
span.s3 { }
span.s4 { color: #ba2da2 }
span.s5 { color: #703daa }
span.s6 { font: 14.0px "PingFang SC" }
span.s7 { color: #3e1e81 }
span.s8 { color: #ff0000 }
span.s9 { color: #0000ff }
span.s10 { color: #000000 }
span.s11 { font: 14.0px "PingFang SC"; color: #444444 }
span.s12 { font: 14.0px SimSun }
span.s13 { font: 14.0px Menlo }
span.s14 { color: #000000 }
span.s15 { color: #4f8187 }
span.Apple-tab-span { white-space: pre }
ol.ol1 { list-style-type: decimal }
ul.ul1 { list-style-type: disc }

1、CLLocationManager使用注意细节:

CLLocationManager:表示某个位置的管理者

CLLocation:表示某个位置的地理信息,比如经纬度、海拔等

开始用户定位:

- (void)startUpdatingLocation;

停止用户定位:

- (void) stopUpdatingLocation;

定位改变授权状态:

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status;

定位成功后将进入此方法,开始不断地定位用户的位置,中途会频繁地调用代理的下面方法:

-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations;

定位失败后将进入此方法:

-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error;

计算2个位置之间的距离

- (CLLocationDistance)distanceFromLocation:(const CLLocation *)location;

2、相关属性:

每隔多少米定位一次

@property(assign, nonatomic) CLLocationDistance distanceFilter;

定位精确度(越精确就越耗电)

@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;

经纬度

@property(readonly, nonatomic) CLLocationCoordinate2D coordinate;

海拔

@property(readonly, nonatomic) CLLocationDistance altitude;

路线,航向(取值范围是0.0° ~ 359.9°,0.0°代表真北方向)

@property(readonly, nonatomic) CLLocationDirection course;

行走速度(单位是m/s)

@property(readonly, nonatomic) CLLocationSpeed speed;

3、设置地图中心点和范围:

//CLLocationCoordinate2D是一个用来表示经纬度的结构体

CLLocationCoordinate2D coordinate=CLLocationCoordinate2DMake(lati, longi);

  1. MKCoordinateRegion用来设置坐标显示范围。包括两部分:
  2. a. Center(CLLocationCoordinate2D struct,包括latitude和longitude),坐标中心
  3. b. Span(MKCoordinateSpan struct,包括latitudeDelta和longitudeDelta),缩放级别
  4. //创建一个以center为中心,上下各1000米,左右各1000米得区域,但其是一个矩形,不符合MapView的横纵比例
  5. MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(center,2000, 2000);
  6. //以上代码创建出来一个符合MapView横纵比例的区域
  7. MKCoordinateRegion adjustedRegion = [mapView regionThatFits:viewRegion];
  8. //以上代码为:最终显示该区域
  9. [mapView setRegion:adjustedRegion animated:YES];

有三种方法:

//设置中心点和范围

MKCoordinateSpan span=MKCoordinateSpanMake(0.1, 0.1);//地理位置的跨度

MKCoordinateRegion region = MKCoordinateRegionMake(centerCoord, span);//地理位置的坐标区域

//设置中心和范围

MKCoordinateRegion  region=MKCoordinateRegionForMapRect(MKMapRect rect)

//设置中心点和以米为单位的经纬度,即在中心点,地图显示维度方向的总距离,经度范围的总距离

MKCoordinateRegion region=MKCoordinateRegionMakeWithDistance(centerCoord, 30*10000, 30*10000);

中心点半径转换为MKCoordinateRegion

MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(center_coord, radius, radius);

MapRect转换为MKCoordinateRegion

MKCoordinateRegion region = MKCoordinateRegionForMapRect(rect);

矩形区域从视图到地图之间转换

- (CGRect)convertRegion:(MKCoordinateRegion)region toRectToView:(UIView *)view;

- (MKMapRect)mapRectForRect:(CGRect)rect;

4、MKMapView使用注意细节:

设置地图显示类型:

  1. mapView.mapType = MKMapTypeStandard;
  2. mapView.mapType = MKMapTypeSatellite;
  3. mapView.mapType = MKMapTypeHybrid;

设置为可以显示用户位置:

  1. mapView.showsUserLocation = YES;
  2. 判断用户当前位置是否可见(只读属性):
  1. userLocationVisible
  2. 设置用户位置坐标:当userLocationVisible为YES时
  3. CLLocationCoordinate2D coords = mapView.userLocation.location.coordinate;

MKMapView包括以下属性:

//设置代理

_mapView.delegate = self;

//用户位置

_mapView.showsUserLocation=NO;

//是否滚动

_mapView.scrollEnabled=YES;

//缩放

_mapView.zoomEnabled=YES;

//旋转

_mapView.rotateEnabled=NO;

//倾斜

_mapView.pitchEnabled=NO;

//地图追踪模式

_mapView.userTrackingMode = MKUserTrackingModeFollow;

MKMapViewDelegate包括以下方法:

对地图位置改变的响应:

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

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

加载地图数据:

-(void)mapViewWillStartLoadingMap:(MKMapView *)mapView;

-(void)mapViewDidFinishLoadingMap:(MKMapView *)mapView;

-(void)mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error;

渲染地图数据:

-(void)mapViewWillStartRenderingMap:(MKMapView *)mapView;

-(void)mapViewDidFinishRenderingMap:(MKMapView *)mapView fullyRendered:(BOOL)fullyRendered;

追踪用户位置:

-(void)mapViewWillStartLocatingUser:(MKMapView *)mapView;

-(void)mapViewDidStopLocatingUser:(MKMapView *)mapView;

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

-(void)mapView:(MKMapView *)mapView didFailToLocateUserWithError:(NSError *)error;

-(void)mapView:(MKMapView *)mapView didChangeUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated;

管理标注view:

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

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views;

-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control;

拖拽标注view:

-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view didChangeDragState:(MKAnnotationViewDragState)newState fromOldState:(MKAnnotationViewDragState)oldState;

选择标注view:

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view;

-(void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view;

管理图层显示:

-(MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay;

-(void)mapView:(MKMapView *)mapView didAddOverlayRenderers:(NSArray<MKOverlayRenderer *> *)renderers;

管理图层view:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay;

- (void)mapView:(MKMapView *)mapView didAddOverlayViews:(NSArray *)overlayViews;

时间: 2024-10-15 15:34:18

iOS地图相关知识总结的相关文章

iOS网络相关知识总结

iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Request的URL, HTTPMethod, HTTPHeader, HTTPBody等信息.一般发请求尽量不要使用NSURLRequest,因为它不能设置请求方式.请求超时等(总之什么都不能设置).通常发请求都使用NSMutableURLRequest,可以进行更多的设置. 补充1:因为NSURL不支持

iOS通讯录相关知识-浅析

本文来自于:贞娃儿的博客  http://blog.sina.com.cn/zhenwawaer 在开发一些应用中,我们如果需要iPhone设备中的通讯录信息.或者,需要开发通讯录相关的一些功能.那么就需要了解一下iOS中关于通讯录编程的相关知识. 一.AddressBook.framework-通讯录框架 关于通讯录的相关操作,被集成在AddressBook.framework框架中.所以,我们在使用通讯录相关功能的时候,需要在项目中引入AddressBook.framework框架.并且在需

一文让你彻底了解iOS字体相关知识

作者:董铂然 授权本站转载. 写本文的契机主要是把自己整理的关于iOS字体方面的知识不断更新写在这篇博文中,用来自己以后查阅. 一.iOS原生字体展示 在 label中选择字体的font,并把font由system改成custom后,就能在family中看到72种特殊字体.这些里面就有很炫的字体,但 是全部是只针对英文数字,对中文无效.写了一个程序把所有的原生样式遍历出来展示可以达到如下效果.可以清楚地看到每个字体对应的样式,不用再一个个试 了. 如果你不是在董铂然博客园看到本文,请点击查看原文

转 iOS:ARC相关知识,assign/copy/retain/strong/weak/readyonly/readwrite/nonatomic/atomic

    自动引用计数 ARC不是垃圾回收,而是编译器自动插入代码来减少程序员的代码输入和失误.     同时比垃圾和效率要高,因为其不影响运行时间,相当于自己管理内存.     总是通过属性来管理实例变量(init/dealloc除外),在dealloc中释放所有属性. dealloc中会自动加入释放实例变量的代码,因此不必要手段增加释放实例变量的代码.不需要手动调用[super  dealloc]   不要调用retain,release,autorelease,编译器会自动插入相关代码. 注

iOS底层基础知识-文件目录结构

一:iOS沙盒知识 出于安全考虑,iOS系统把每个应用以及数据都放到一个沙盒(sandbox)里面,应用只能访问自己沙盒目录里面的文件.网络资源等(也有例外,比如系统通讯录.照相机.照片等能在用户授权的情况下被第三方应用访问) 1:MyApp.app 该目录包含了应用程序本身的数据,程序打包的时候的资源文件和一些本地文件就是存放在这个目录下的. 程序的可执行程序.plist文件也在这个目录下. 这个目录不会被iTunes同步 2:Documents 使用这个目录来保存关键数据.关键数据指那些应用

深入浅出安卓学习相关知识,如何从零学好移动开发

原文发表自我的个人主页,欢迎大家访问 http://purplesword.info/mobile-develop 由于近几年来互联网的飞速发展,安卓和iOS平台的大量普及推广,移动开发在当前是非常热门的一个方向. 有不少同学问我如何学习安卓,要学些什么,难不难学.之前一直没有想好应该怎么回答这个问题,只是简单的说安卓自身门槛不高,并不难学.因为我觉得准确回答一个类似这样的问题往往需要灵感.现在根据我的学习体验,做个大概的总结. 1.我为什么学安卓 我从刚开始接触安卓开发到现在也有两三年的时间了

iOS地图导航仪的实现

第一部分 知识储备 1 根据地址定位 苹果给开发者为地址解析提供了CLGeocode工具类,该工具类可以把用户输入的地址解析成经纬度,该方是: -geocodeAddressString:destAddress completionHandler:^(NSArray *placemarks, NSError *error)   该方法将字符串地址解析,然后就可以得到对应的经纬度 2 MKMapView控件及相关属性 <1 ios的MKMapView支持一下三种属性: MKMapTypeStand

黑马程序员---Objective-C基础学习---类、对象、方法相关知识笔记

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 类.对象.方法相关知识笔记 Objective-C相对于C语言有了面向对象的特性,但是ObjC又没有其他面向对象语言那么多语法特性,ObjC本身对面向对象进行了精简.下面是一些相关知识笔记. 类定义 成员变量 方法和属性 self关键字 类定义 在C#.Java等其他高级语言中定义一个类是相当简单点的,直接一个关键字class加一对大括号基本就完成了,但是在ObjC中类的定义相对变化比较大.现

iOS 地图开发小结

首先来说说ios地图开发使用的主要类: MKMapView:地图控件,无其他Label等控件无异,拖进来就可以用了,用于地图的内容的显示,用户可以对地图进行放大.缩小.拖动.旋转等操作: CLLocationCoordinate2D :坐标,包括经度和纬度: MKCoordinateSpan :地图跨度,表示地图放大倍数,数值越小地图显示的单位越精细: CLLocationManager :用户所在位置的管理类,通过该类的能够获取用户所在的GPS坐标. 下面与大家分享一些个人项目中地图部分所涉及