百度地图之基本功能
2016-12-15 12:02
176 查看
// // MapViewBaseDemoViewController.m // BaiduMapSdkSrc // // Created by BaiduMapAPI on 13-7-24. // Copyright (c) 2013年 baidu. All rights reserved. // #import "MapViewBaseDemoViewController.h" @interface MapViewBaseDemoViewController()<UIGestureRecognizerDelegate> { BOOL enableCustomMap; } @end @implementation MapViewBaseDemoViewController + (void)initialize { //设置自定义地图样式,会影响所有地图实例 //注:必须在BMKMapView对象初始化之前调用 NSString* path = [[NSBundle mainBundle] pathForResource:@"custom_config_清新蓝" ofType:@""]; [BMKMapView customMapStyle:path]; } - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; //适配ios7 if( ([[[UIDevice currentDevice] systemVersion] doubleValue]>=7.0)) { // self.edgesForExtendedLayout=UIRectEdgeNone; self.navigationController.navigationBar.translucent = NO; } //添加普通地图/个性化地图切换开关 UISegmentedControl *segment = [[UISegmentedControl alloc] initWithItems:@[@"normal", @"custom"]]; [segment setSelectedSegmentIndex:0]; [segment addTarget:self action:@selector(changeMapAction:) forControlEvents:UIControlEventValueChanged]; self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:segment]; enableCustomMap = NO; [self addCustomGestures];//添加自定义的手势 } -(void)viewWillAppear:(BOOL)animated { [_mapView viewWillAppear]; _mapView.delegate = self; // 此处记得不用的时候需要置nil,否则影响内存的释放 [BMKMapView enableCustomMapStyle:enableCustomMap]; } -(void)viewWillDisappear:(BOOL)animated { [BMKMapView enableCustomMapStyle:NO];//关闭个性化地图 [_mapView viewWillDisappear]; _mapView.delegate = nil; // 不用时,置nil } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } - (void)dealloc { if (_mapView) { _mapView = nil; } } - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc. that aren't in use. } - (void)changeMapAction:(UISegmentedControl *)segment { /* *注:必须在BMKMapView对象初始化之前设置自定义地图样式,设置后会影响所有地图实例 *设置方法:+ (void)customMapStyle:(NSString*) customMapStyleJsonFilePath; */ enableCustomMap = segment.selectedSegmentIndex == 1; //打开/关闭个性化地图 [BMKMapView enableCustomMapStyle:enableCustomMap]; } #pragma mark - BMKMapViewDelegate - (void)mapViewDidFinishLoading:(BMKMapView *)mapView { // UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"BMKMapView控件初始化完成" delegate:nil cancelButtonTitle:@"知道了" otherButtonTitles: nil]; // [alert show]; // alert = nil; } - (void)mapView:(BMKMapView *)mapView onClickedMapBlank:(CLLocationCoordinate2D)coordinate { NSLog(@"map view: click blank"); } - (void)mapview:(BMKMapView *)mapView onDoubleClick:(CLLocationCoordinate2D)coordinate { NSLog(@"map view: double click"); } #pragma mark - 添加自定义的手势(若不自定义手势,不需要下面的代码) - (void)addCustomGestures { /* *注意: *添加自定义手势时,必须设置UIGestureRecognizer的属性cancelsTouchesInView 和 delaysTouchesEnded 为NO, *否则影响地图内部的手势处理 */ UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)]; doubleTap.delegate = self; doubleTap.numberOfTapsRequired = 2; doubleTap.cancelsTouchesInView = NO; doubleTap.delaysTouchesEnded = NO; [self.view addGestureRecognizer:doubleTap]; /* *注意: *添加自定义手势时,必须设置UIGestureRecognizer的属性cancelsTouchesInView 和 delaysTouchesEnded 为NO, *否则影响地图内部的手势处理 */ UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)]; singleTap.delegate = self; singleTap.cancelsTouchesInView = NO; singleTap.delaysTouchesEnded = NO; [singleTap requireGestureRecognizerToFail:doubleTap]; [self.view addGestureRecognizer:singleTap]; } - (void)handleSingleTap:(UITapGestureRecognizer *)theSingleTap { /* *do something */ NSLog(@"my handleSingleTap"); } - (void)handleDoubleTap:(UITapGestureRecognizer *)theDoubleTap { /* *do something */ NSLog(@"my handleDoubleTap"); } @end
BMKMapViewDelegate
/** *地图初始化完毕时会调用此接口 *@param mapview 地图View */ - (void)mapViewDidFinishLoading:(BMKMapView *)mapView; /** *地图渲染每一帧画面过程中,以及每次需要重绘地图时(例如添加覆盖物)都会调用此接口 *@param mapview 地图View *@param status 此时地图的状态 */ - (void)mapView:(BMKMapView *)mapView onDrawMapFrame:(BMKMapStatus*)status; /** *地图区域即将改变时会调用此接口 *@param mapview 地图View *@param animated 是否动画 */ - (void)mapView:(BMKMapView *)mapView regionWillChangeAnimated:(BOOL)animated; /** *地图区域改变完成后会调用此接口 *@param mapview 地图View *@param animated 是否动画 */ - (void)mapView:(BMKMapView *)mapView regionDidChangeAnimated:(BOOL)animated; /** *根据anntation生成对应的View *@param mapView 地图View *@param annotation 指定的标注 *@return 生成的标注View */ - (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id <BMKAnnotation>)annotation; /** *当mapView新添加annotation views时,调用此接口 *@param mapView 地图View *@param views 新添加的annotation views */ - (void)mapView:(BMKMapView *)mapView didAddAnnotationViews:(NSArray *)views; /** *当选中一个annotation views时,调用此接口 *@param mapView 地图View *@param views 选中的annotation views */ - (void)mapView:(BMKMapView *)mapView didSelectAnnotationView:(BMKAnnotationView *)view; /** *当取消选中一个annotation views时,调用此接口 *@param mapView 地图View *@param views 取消选中的annotation views */ - (void)mapView:(BMKMapView *)mapView didDeselectAnnotationView:(BMKAnnotationView *)view; /** *拖动annotation view时,若view的状态发生变化,会调用此函数。ios3.2以后支持 *@param mapView 地图View *@param view annotation view *@param newState 新状态 *@param oldState 旧状态 */ - (void)mapView:(BMKMapView *)mapView annotationView:(BMKAnnotationView *)view didChangeDragState:(BMKAnnotationViewDragState)newState fromOldState:(BMKAnnotationViewDragState)oldState; /** *当点击annotation view弹出的泡泡时,调用此接口 *@param mapView 地图View *@param view 泡泡所属的annotation view */ - (void)mapView:(BMKMapView *)mapView annotationViewForBubble:(BMKAnnotationView *)view; /** *根据overlay生成对应的View *@param mapView 地图View *@param overlay 指定的overlay *@return 生成的覆盖物View */ - (BMKOverlayView *)mapView:(BMKMapView *)mapView viewForOverlay:(id <BMKOverlay>)overlay; /** *当mapView新添加overlay views时,调用此接口 *@param mapView 地图View *@param overlayViews 新添加的overlay views */ - (void)mapView:(BMKMapView *)mapView didAddOverlayViews:(NSArray *)overlayViews; /** *点中覆盖物后会回调此接口,目前只支持点中BMKPolylineView时回调 *@param mapview 地图View *@param overlayView 覆盖物view信息 */ - (void)mapView:(BMKMapView *)mapView onClickedBMKOverlayView:(BMKOverlayView *)overlayView; /** *点中底图标注后会回调此接口 *@param mapview 地图View *@param mapPoi 标注点信息 */ - (void)mapView:(BMKMapView *)mapView onClickedMapPoi:(BMKMapPoi*)mapPoi; /** *点中底图空白处会回调此接口 *@param mapview 地图View *@param coordinate 空白处坐标点的经纬度 */ - (void)mapView:(BMKMapView *)mapView onClickedMapBlank:(CLLocationCoordinate2D)coordinate; /** *双击地图时会回调此接口 *@param mapview 地图View *@param coordinate 返回双击处坐标点的经纬度 */ - (void)mapview:(BMKMapView *)mapView onDoubleClick:(CLLocationCoordinate2D)coordinate; /** *长按地图时会回调此接口 *@param mapview 地图View *@param coordinate 返回长按事件坐标点的经纬度 */ - (void)mapview:(BMKMapView *)mapView onLongClick:(CLLocationCoordinate2D)coordinate; /** *3DTouch 按地图时会回调此接口(仅在支持3D Touch,且fouchTouchEnabled属性为YES时,会回调此接口) *@param mapview 地图View *@param coordinate 触摸点的经纬度 *@param force 触摸该点的力度(参考UITouch的force属性) *@param maximumPossibleForce 当前输入机制下的最大可能力度(参考UITouch的maximumPossibleForce属性) */ - (void)mapview:(BMKMapView *)mapView onForceTouch:(CLLocationCoordinate2D)coordinate force:(CGFloat)force maximumPossibleForce:(CGFloat)maximumPossibleForce; /** *地图状态改变完成后会调用此接口 *@param mapview 地图View */ - (void)mapStatusDidChanged:(BMKMapView *)mapView; /** *地图进入/移出室内图会调用此接口 *@param mapview 地图View *@param flag YES:进入室内图; NO:移出室内图 *@param info 室内图信息 */ - (void)mapview:(BMKMapView *)mapView baseIndoorMapWithIn:(BOOL)flag baseIndoorMapInfo:(BMKBaseIndoorMapInfo *)info;
相关文章推荐
- 关于在Android客户端上百度地图的基本功能实现
- 百度地图入门一:获取秘钥和基本地图功能实现
- 百度地图使用之基本功能
- 百度地图入门一:获取秘钥和基本地图功能实现
- 使用百度地图实现基本的地图显示与定位功能
- 使用百度地图实现基本的地图显示与定位功能
- Android百度地图应用之基本地图功能实现
- 【百度地图开发之四】百度地图基本操作功能实现讲解
- android新手进阶之百度地图基本功能实现
- HTML5 / JS实现百度地图基本常用功能
- BaiduMap---百度地图官方Demo之地图操作功能(介绍地图基本控制方法)
- KS系列之百度地图基本功能的实现(二)
- 百度地图使用之基本功能
- BaiduMap---百度地图官方Demo之基本地图功能(创建一张百度地图并管理地图的生命周期)
- 使用百度地图实现基本的地图显示与定位功能
- GIS基本理论之一:GIS的概念、构成结构、功能
- 一个软件系统应该具备的最基本的功能
- ListBox控件基本功能
- 彩信平台基本功能终于搞定了
- MyiSpace.cn 使用指南(2) -- MyiSpace.cn 的基本功能