无限互联地图框架MapView采用MKMapView.docx
- 文档编号:2128122
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:23
- 大小:2.41MB
无限互联地图框架MapView采用MKMapView.docx
《无限互联地图框架MapView采用MKMapView.docx》由会员分享,可在线阅读,更多相关《无限互联地图框架MapView采用MKMapView.docx(23页珍藏版)》请在冰豆网上搜索。
无限互联地图框架MapView采用MKMapView
[无限互联]地图框架MapView(采用MKMapView)
————————————————————————————————作者:
————————————————————————————————日期:
--------------------------MApView的功能-----------------------------
MapView这个框架是在MKMapView中实现地址选择和导航功能。
具有一下功能:
1.支持IOS6~7
2.自定义MKAnnotationView
3.支持第三方导航功能,包括高德,XX,苹果,谷歌
4.可以绘制导航路线
5.支持滑动地图,选择定位地址
我们理解这个框架之前必须对IOS内置一些框架
MapKit.framework、CoreLocation.framework
-------------------------MapKit.framework-----------------------------
简单的使用:
一、创建地图视图
1.方法一
MKMapView *mapView=[[MKMapViewalloc]init];
mapView.frame =self.view.bounds;
2.方法二
MKMapView *mapView=[[MKMapViewalloc]initWithFrame:
self.view.bounds];
二、设置mapView的属性
1.地图类型:
MKMapTypeStandard 显示街道和道路 MKMapTypeSatellite 显示卫星 MKMapTypeHybrid 显示混合地图
[mapViewsetMapType:
MKMapTypeStandard];
2.显示用户当前的坐标,打开地图有相应的提示
mapView.showsUserLocation =YES;
3.设置地图的代理(可以使用MKMapViewDelegate的协议方法)
mapView.delegate =self;
4.定义经纬度
CLLocationCoordinate2D coordinate;
coordinate.latitude =28.2148;
coordinate.longitude =112.893;
5.定义显示的范围(范围越小、地图越精确)
MKCoordinateSpan span;
span.latitudeDelta =0.1;
span.longitudeDelta =0.1;
6.定义一个区域(用定义的经纬度和范围来定义)
MKCoordinateRegion region;
region.center =coordinate;
region.span =span;
7.在地图上显示
[mapViewsetRegion:
region];
三、添加标注
1.定义一个标注类(MapAnnotation)并实现MKAnnotation协议
@property (nonatomic,readonly)CLLocationCoordinate2D coordinate;(必须实现的协议)
2.创建标注及设置标注属性
MapAnnotation *mapAnnotation=[[MapAnnotationalloc]init];
mapAnnotation.title =@"标签标题";
mapAnnotation.subtitle =@"标签子标题";
mapAnnotation.coordinate =coordinate;
3.将标注添加到mapView
[mapViewaddAnnotation:
mapAnnotation];
4.实现MKMapViewDelegate协议添加标志视图的协议方法
-(MKAnnotationView *)mapView:
(MKMapView *)mapViewviewForAnnotation:
(id
(标注视图用MKAnnotationView创建,也可以用大头针创建MKPinAnnotationView,还可以自定义,也具备复用功能)类似UITableViewCell的创建,就是为了显示Annotation,每在MapView中加入一个Annotation,就会调用此方法)
-(void)mapView:
(MKMapView *)mapViewdidUpdateUserLocation:
(MKUserLocation*)userLocation
(已经更新用户自己的位置)
-(void)mapView:
(MKMapView *)mapViewregionDidChangeAnimated:
(BOOL)animated
(地图区域已经变化时,当手势结束(拖拽,放大,缩小,双击)也会触发)
-(void)mapView:
(MKMapView *)mapViewregionWillChangeAnimated:
(BOOL)animated
(地图区域将要变化时,当手势开始(拖拽,放大,缩小,双击)也会触发)
-(MKOverlayRenderer *)mapView:
(MKMapView *)mapView
rendererForOverlay:
(id
(绘制路径)
---------------------CoreLocation.framework-----------------------------
(CoreLocation提供了定位功能,能定位装置的前坐标,同时能得到装置移动信息,因为对定位装置的轮询是很耗电的,所以最好只在非常必要的前提下启动)
一、创建CLLocationManager(位置管理器)
CLLocationManager *manager=[[CLLocationManageralloc]init];
二、属性设置
1.代理设置(可以使用CLLocationManagerDelegate的协议方法)
manager.delegate =self;
2.设置定位的精度(可以设置为最优,装置会自动用最精确的方式去定位)
manager.desiredAccuracy =kCLLocationAccuracyBest;
3.设置距离过滤器(为了减少对定位装置的轮询次数,位置的改变不会每次都去通知委托,而是在移动了足够的距离是才通知委托程序,它的单位是米,这里设置为至少移动1000米在通知委托处理更新)
manager.distanceFilter =1000.0f;
4.启动位置更新和关闭位置更新(执行startUpdatingLocation就启动了定位管理了,一般来说,在不需要更新定位是最好关闭它,即用执行stopUpdatingLocation,这样可以节省电量)
[managerstartUpdatingLocation];
[managerstopUpdatingLocation];
5.执行协议方法
-(void)locationManager:
(CLLocationManager *)manager
didUpdateToLocation:
(CLLocation *)newLocation
fromLocation:
(CLLocation *)oldLocation(IOS2~6)
-(void)locationManager:
(CLLocationManager *)manager(>=IOS6)
didUpdateLocations:
(NSArray *)locations
(数组locations里面装了两个CLLocation对象,里面有经纬度的坐标值,一个是定位前的旧位置,一个是定位后的新位置)
-(void)locationManager:
(CLLocationManager *)manager
didFailWithError:
(NSError *)error
(当定位出现错误时就会调用这个方法)
-------------------------框架的简单用法----------------------------
1.查看地理位置并可以实现导航
[objc] viewplaincopy
1. FangSong;font-size: 18px;font-weight: normal;">NSMutableDictionary *dic = [[NSMutableDictionary alloc] initWithObjectsAndKeys: 2. @"中国湖南省长沙市岳麓区软件大楼",@"address", 3. @"长沙市",@"city", 4. @"google",@"from_map_type", 5. @"28.214800000",@"google_lat", 6. @"112.89300000",@"google_lng", 7. @"麓谷区",@"region", nil nil]; 8. MapViewController *mv = [[MapViewController alloc] init]; 9. mv.navDic = dic; 10. mv.mapType = RegionNavi; 11. [self.navigationController pushViewController: mv animated: YES];
2.位置(就是确定“我的位置”)
[objc] viewplaincopy
1. FangSong;font-size: 18px;font-weight: normal;">MapViewController *mv = [[MapViewController alloc] init]; 2. mv.siteDelegate = self; 3. [mv setHidesBottomBarWhenPushed: YES]; 4. mv.mapType = RegionChoose; 5. [self.navigationController pushViewController: mv animated: YES];
---------------------------框架的组成-------------------------------
MapViewController--------->控制器类,管理地图的控制器(整个框架的核心)
主要功能:
1.定位
定位比较简单,用定位管理器调用sta
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 无限 地图 框架 MapView 采用 MKMapView