开发教程二部分进阶篇_第1页
开发教程二部分进阶篇_第2页
开发教程二部分进阶篇_第3页
开发教程二部分进阶篇_第4页
开发教程二部分进阶篇_第5页
已阅读5页,还剩146页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目第二进阶 第一章Hello 通过代码创 通过Xib创 通过Storyborad创目第二进阶 第一章Hello 通过代码创 通过Xib创 通过Storyborad创 事件监 第二章地 地图展 地图控 事件监 第三章覆盖 几何图形图 标注图 弹出窗口图 图片图 自定义覆盖物图 事件监 第四章定 定位介 定位与地图结 定位与地图分 事件监 第五章检 兴趣点检 地理编 路定位与地图分 事件监 第五章检 兴趣点检 地理编 路径规 公交线路查 在线建议查 短串分 小 第六章离线地 介 初始化离线地 下载和导 其他功 事件监 第七章LBS.云服 介 LBS.云存 LBS.云检 事件监 第二部分第一章Hello百度地图可以通过以下3种方式创建:通过代码创建、通过Xib创建和通过第二部分第一章Hello百度地图可以通过以下3种方式创建:通过代码创建、通过Xib创建和通过骤才能显示地图:初始化BMKMapManager、创建BMKMapView、管理地图生命周1.通过代码创.2AppDelegate.mBMKMapManager的初始化,并填入您申请的授权Key,代码如下:1-(BOOL)application:(UIApplication#import"BMapKit.h"@class@interfaceAppDelegate:UIResponder<UIApplicationDelegate,{BMKMapManager}@property(strong,nonatomic)UIWindow@property(strong,nonatomic)ViewControllerKey2Key2{if(0==iError)NSLog(@"联网成功}}}{if(0==iError)NSLog(@"授权成功}else}}{_mapManager=[[BMKMapManageralloc]BOOLret_mapManagerstart:@"在此输入您授权keygeneralDelegate:self];if(!ret){NSLog(@"managerstart}[_mapManager//Overridepointforcustomizationafterapplicationself.viewController=[[[ViewControlleralloc]initWithNibName:@"ViewController"bundle:nil]autorelease];self.window.rootViewController=self.viewController;[self.windowmakeKeyAndVisible];return}.1.3管理地图生命周.1.3管理地图生命周BMKMapView的viewController中需要在viewWillAppear、3{[_mapView}-{[super代码创建_mapView=[[BMKMapViewalloc]initWithFrame:CGRectMake(0,0,320,[self.view}#import"BMapKit.h"@interfaceViewController:UIViewControllerBMKMapView}错误名错误说02BMKMapView的地方,均需要正确处理其生命周期,否则在其他地方调用BMKMapView可能会产生影响。1.4.显示BMKMapView的地方,均需要正确处理其生命周期,否则在其他地方调用BMKMapView可能会产生影响。1.4.显示能,将地图放大到一定级别即可看到3D地图效果。option+鼠标左键即可缩放或者旋转地图,shift+option+鼠标左键即可改变地4{[_mapView_mapView.delegatenil}2.Xib创本节主要讲解如何通过Xib创建百度地图,示例代码详见2.Xib创本节主要讲解如何通过Xib创建百度地图,示例代码详见步骤一步骤二步骤三步骤四5#import"BMapKit.h"@interfaceViewController:UIViewControllerIBOutletBMKMapView}步骤五步骤五6#import"ViewController.h"@interfaceViewController()@implementation{[super//Doanyadditionalsetupafterloadingtheview,typicallyfroma}{[super//Disposeofanyresourcesthatcanbe}{[_mapView}{[_mapView_mapView.delegatenil}步骤六3.Storyborad创本节主要讲解如何通过步骤六3.Storyborad创本节主要讲解如何通过Storyboard创建百度地图,示例代码详见StoryboardiOS5.0NIB/XIB。百度地图您还想让您的应用支持iOS4.3版本就只能放弃用Storyboard了。为了避免重新配置环境,下面演示如何在刚才使用Xib创建的工程中使Storyboard,并默认使用Storyboard显示步骤一UserInterfaceStoryboardFile…7-{[superdealloc];if(_mapView)[_mapView_mapView=}}步骤二8步骤二8步骤三步骤四步骤三步骤四步骤五9创建Storyboard所对应的UIViewController文件,这里暂时命名为步骤六创建Storyboard所对应的UIViewController文件,这里暂时命名为步骤六步骤七#import"StoryboardController.h"@interfaceStoryboardController()@implementation#import"BMapKit.h"@interfaceStoryboradController:UIViewControllerIBOutletBMKMapView}-{self=[superinitWithNibName:nibNameOrNilbundle:nibBundleOrNil];-{self=[superinitWithNibName:nibNameOrNilbundle:nibBundleOrNil];if(self){//Custom}return}-{[superDoanyadditionalsetupafterloadingtheNSLog(@"BaiduMapFrom}-{[super//Disposeofanyresourcesthat}{[_mapView_mapView.delegate=}[_mapViewviewWillDisappear];_mapView.delegate=}{-{[superdealloc];if(_mapView)[_mapView_mapView=步骤八步骤九将Storyboard.storyborad文件和步骤八步骤九将Storyboard.storyborad文件和StoryboardController文件相关联,选中“StoryboardController”,如下图所示:CustomClass步骤十添加一个View,修改其Identityinspector属性中的CustomClass属性为_mapView}步骤十一步骤十一-(BOOL)application:(UIApplication*)application{_mapManager=[[BMKMapManageralloc]BOOLret_mapManagerstart:@在此输入您授权keygeneralDelegate:self];if(!ret){NSLog(@"managerstart}[_mapManager//Overridepointforcustomizationafterapplication使用StoryboardUIStoryboard*storyboard=[UIStoryboardstoryboardWithName:@"Storyboard"StoryboardController*storyboardController=[storyboardself.window.rootViewController=storyboardController;[self.windowmakeKeyAndVisible];return}步骤十二步骤十二说明成功从Storyborad中加载地图,如下图所示:4.事件监-{}-{}第二1.地图展第二1.地图展1.1.普通_mapView.mapType= 1.2.3D251.2.3D25个城市,分别是:武汉、东莞、福州、昆明、泉州、苏州、太原、蚌埠、滨势幅度大小决定。当地图放大到最大细节时,可看到楼块拔起的效果。代码设定:BMKMapView类中新增地图属性rotate和overlooking,分别表示图3D效果,代码如下: 1.3.卫星1-191-7为低分辨率全球覆盖,1.3.卫星1-191-7为低分辨率全球覆盖,8-13级为中分辨率全中国覆盖,14-19级为高清分辨率部分城市重点区域覆盖。我们将陆续更新上线共339个城市。_mapView.mapType= _mapView.rotation=_mapView.overlooking=-1.4.实时交通1.4.实时交通_mapView.mapType= _mapView.mapType=_mapView.mapType= 1.5.小值地图类12实时交通图(普通图41.5.小值地图类12实时交通图(普通图48实时交通图(卫星图2.地图控2.1.UI控2.地图控2.1.UI控1、比例尺V2.0.2开始,新增比例尺控件。默认情况下是不显示比例尺控件的,比_mapView.mapScaleBarPosition= _mapView.showMapScaleBarfalse_mapView.showMapScaleBartrue;2、指南针控制指南针在地图上显示的位置,代码如下_mapView.2、指南针控制指南针在地图上显示的位置,代码如下_mapVpassPosition= 2.2.手势1、多点缩放2、移动地图3、手势中心点2、移动地图3、手势中心点缩放和旋转地图自V2.1.0开始,新增手势中心点缩放和旋转地图功能。默认情况下,是以2.3.操作1、缩放级别控制地图缩放级别,代码如下_mapView.ChangeWithTouchPointCenterEnabledtrue;_mapView.scrollEnabledfalse_mapView.scrollEnabledtrue;_mapView.zoomEnabledfalse_mapView.zoomEnabledtrue;2、旋转角度r2、旋转角度r_mapView.rotation=_mapView.zoomLevel=3、俯视角度3、俯视角度//_mapView.overlooking=-4、自定义中心V2.1.04、自定义中心V2.1.05、同时改变地图状V2.1.0开始,新增同时改变地图状态。该功能可以同时改变地图的缩放BMKMapStatus*mapStatus=[[BMKMapStatusalloc]mapStatus.fLevelmapStatus.fLevel=mapStatus.fRotation=mapStatus.fOverlooking=-1.mapStatus.targetScreen=CGPointMake(100,mapStatus.targetGeoPt=1.[_mapView[_mapViewsetMapStatus:mapStatus[_mapViewsetMapStatus:mapStatuswithAnimation:YES释放[mapStatus态之后,缩放和旋转中心点将会移动到MapView的中心点;如果已经自定义了2.4.点击态之后,缩放和旋转中心点将会移动到MapView的中心点;如果已经自定义了2.4.点击2.5.小功1、截图2.5.小功1、截图V2.0.1开始,新增截图功能。截图功能可以获得地图当前可视区域的截IBOutletUIImageView_imgView.image=[_mapView2、测距2、测距BMKMapPointpointTo;pointFrom=BMKMapPointForCoordinate(coors[0]);pointTo=BMKMapPointForCoordinate(coors[1]);CLLocationDistancemeter;meter==[3.事件监3.事件监-(void)mapView:(BMKMapView*)mapView}V2.0.1V2.0.1V2.0.1V2.0.1}-(void)mapview:(BMKMapView*)mapView}-(void)mapview:(BMKMapView*)mapView}*@parammapPoi}V2.1.0V2.1.0-(void)mapStatusDidChanged:(BMKMapView*)mapView}}第三章覆盖地图覆盖物的设计遵循数据与View分离的原则,BMKAnnotation和BMKOverlay系列的类主要用来存放覆盖物相关的数据,第三章覆盖地图覆盖物的设计遵循数据与View分离的原则,BMKAnnotation和BMKOverlay系列的类主要用来存放覆盖物相关的数据,BMKAnnotaionView和BMKOverlayView系列类为覆盖物对应的View。1.几何图形图V2.0.0开始,矢量地图采用制、面绘制接口,SDK内置的OpenGL绘制,支持OpenGLBMKPolylineOverlay、BMKPolygonOverlayBMKCircleOverlayOpenGLViewController.hBMKMapViewDelegate协议,代1.1.折rOverlay:函数,并在viewDidLoad添加折线数据对象,代码如下:-{[superCLLocationCoordinate2Dcoors[2]=coors[0].latitude=coors[0].longitude=@interfaceViewController:UIViewController<BMKMapViewDelegate>{IBOutlet}coors[1].latitudecoors[1].latitude=coors[1].longitude=BMKPolyline*polyline=[BMKPolylinepolylineWithCoordinates:coorscount:2];[_mapViewaddOverlay:polyline];}-(BMKOverlayView*)mapView:(BMKMapView*)mapView{if([overlayisKindOfClass:[BMKPolyline{BMKPolylineView*polylineView=[[[BMKPolylineViewalloc]initWithOverlay:overlay]autorelease];polylineView.strokeColor=polylineView.lineWidth=3.0;returnpolylineView;}return}1.2.多边1.2.多边rOverlay:函数,并在viewDidLoad添加多边形数据对象,代码如下:-{[superCLLocationCoordinate2Dcoords[4]=coords[0].latitude=coords[0].longitude=coords[1].latitude=coords[1].longitude=coords[2].latitude=coords[2].longitudecoords[2].longitude=coords[3].latitude=coords[3].longitude=BMKPolygon*polygon=[BMKPolygonpolygonWithCoordinates:coordscount:4];[_mapViewaddOverlay:polygon];}根据overlay-(BMKOverlayView*)mapView:(BMKMapView*)mapView{if([overlayisKindOfClass:[BMKPolygon{BMKPolygonView*polygonView=[[[BMKPolygonViewalloc]initWithOverlay:overlay]autorelease];polygonView.strokeColor=polygonView.fillColor=returnpolygonView;}return}1.3.rOverlay:1.3.rOverlay:函数,并在viewDidLoad添加圆的数据对象,代码如下:-{[super//添加圆形覆盖物coor.latitude=39.915;coor.longitude=BMKCircle*circle=[BMKCirclecircleWithCenterCoordinate:coorradius:5000];[_mapViewaddOverlay:circle];}根据overlay-(BMKOverlayView*)mapView-(BMKOverlayView*)mapView:(BMKMapView*)mapView{if([overlayisKindOfClass:[BMKCircle{BMKCircleView*circleView=[[[BMKCircleViewalloc]initWithOverlay:overlay]autorelease];circleView.strokeColor=[[UIColorblueColor]circleView.lineWidth=5.0;returncircleView;}return}2.标注图2.1.添加2.标注图2.1.添加ointAnnotation和BMKAnnotationView,代码如下:#import"BMapKit.h"@interfaceAnnotationDemoViewController:UIViewControllerIBOutletBMKMapView*}{pointAnnotation=[[BMKPointAnnotationalloc]init];CLLocationCoordinate2Dcoor;coor.latitude=coor.longitude=116.404;pointAnnotation.coordinate=coor;pointAnnotation.title=@"test";pointAnnotation.subtitle@"Annotation可拖拽!";[_mapViewaddAnnotation:pointAnnotation];[pointAnnotationrelease];}#pragmamark#pragmamarkimplement(BMKAnnotationView*)mapView:(BMKMapView*)mapView{NSString*AnnotationViewID=@"renameMark";if(newAnnotation==nil){#import{BMKAnnotationView*newAnnotation;}@implementation添加一个if(pointAnnotation=={[self}}return}2.2.移除2.2.移除3.弹出窗口图3.1.系统没有设置annotation3.弹出窗口图3.1.系统没有设置annotation的canShowCallout值为NO,同时实现了title的方法,如下-(void)mapView:(BMKMapView*)mapView{}pointAnnotation.title==移除一个if(pointAnnotation!={}添加一个if(pointAnnotation=={[self}3.2.自定3.2.自定viewBMKActionPaopaoView,然后将它赋值给newAnnotation的paopaoView属性,代码如下:-(BMKAnnotationView*)mapView:(BMKMapView*)mapView{NSString*AnnotationViewID=@"renameMark";if(newAnnotation==nil){UIView*customView=[[UIViewalloc]initWithFrame:CGRectMake(0,0,customView.backgroundColor=[UIColorbutton1.backgroundColor=[UIColorblueColor];[customViewBMKActionPaopaoView*test=[[BMKActionPaopaoView}return}4.图片图自V2.1.0开始,新增图片图层,开发者可在地图的指定位置上添加图片。4.图片图自V2.1.0开始,新增图片图层,开发者可在地图的指定位置上添加图片。此外,图片图层的添加顺序不会影响其他图层(例如:POI搜索图层、我的位置ViewController.hBMKMapViewDelegate协议,utletBMKMapView*_mapView;4.1.指定经纬度坐4.1.指定经纬度坐-(BMKOverlayView*)mapView:(BMKMapView*)mapView{if([overlayisKindOfClass:[BMKGroundOverlay{BMKGroundOverlayView*groundView=[[[BMKGroundOverlayViewalloc]initWithOverlay:overlay]autorelease];return}return}-{[superCLLocationCoordinate2Dcoors;coors.latitude=39.800;coors.longitude=BMKGroundOverlay*ground=[BMKGroundOverlaygroundOverlayWithPosition:coorszoomLevel:11anchor:CGPointMake(0.0f,0.0f)icon:[UIImage[_mapView}}4.2.指定4.2.指定-{[superCLLocationCoordinate2Dcoords[2]=coords[0].latitude=coords[0].longitude=coords[1].latitude=coords[1].longitude=-(BMKOverlayView*)mapView:(BMKMapView*)mapView{if([overlayisKindOfClass:[BMKGroundOverlay{BMKGroundOverlayView*groundView=[[[BMKGroundOverlayViewalloc]initWithOverlay:overlay]autorelease];return}return}BMKCoordinateBoundsbound;bound.southWest=coords[0];bound.northEast=BMKGroundOverlay*ground2=[BMKGroundOverlaygroundOverlayWithBounds:boundicon:[UIImageimageWithName:@"test.png"]];[_mapView}5.自定义覆盖物图5.自定义覆盖物图V2.0.0开始,地图渲染采用OpenGL方式实现,因此覆盖物基类renderRegionWithPoints的接口来实现对覆盖物的OpenGL渲染。glRenderrenderLinesWithPointsrenderRegionWithPoints来组合想//-{CustomOverlay*customOverlay=[selfglRenderdrawMapRectGDI绘制,GDIoverlayView尺寸较大时可能有效率问题,因此建议使用glRenderdrawMapRectGDI绘制,GDIoverlayView尺寸较大时可能有效率问题,因此建议使用glRenderoverlay-{[supercoor1.latitude=39.915;coor1.longitude=BMKMapPointpt1=BMKMapPointForCoordinate(coor1);CLLocationCoordinate2Dcoor2;coor2.latitude=coor2.longitude=#import"BMapKit.h"{IBOutletBMKMapView*}if(customOverlay.pointCount>=3)[selfrenderRegionWithPoints:customOverlay.points{[selfrenderLinesWithPoints:customOverlay.pointslineWidth:self.lineWidthlooped:NO];}}BMKMapPointpt2=BMKMapPoint*temppoints=BMKMapPointpt2=BMKMapPoint*temppoints=new====CustomOverlay*custom=[[[CustomOverlayalloc]initWithPoints:temppointscount:2]autorelease];[_mapViewcoor3.latitude=39.915;coor3.longitude=BMKMapPointpt3=BMKMapPointForCoordinate(coor3);CLLocationCoordinate2Dcoor4;coor4.latitude=coor4.longitude=BMKMapPointpt4=BMKMapPointForCoordinate(coor4);CLLocationCoordinate2Dcoor5;coor5.latitude=coor5.longitude=BMKMapPointpt5=BMKMapPointForCoordinate(coor5);BMKMapPoint*temppoints2=newBMKMapPoint[3];======CustomOverlay*custom2=[[[CustomOverlayalloc]initWithPoints:temppoints2count:3]autorelease];[_mapView}-(BMKOverlayView*)mapView:(BMKMapView*)mapView{if([overlayisKindOfClass:[CustomOverlay{CustomOverlayView*cutomView=[[[CustomOverlayViewalloc]initWithOverlay:overlay]autorelease];cutomView.strokeColor=[[UIColorblueColor]6.事件监(1)6.事件监(1)cutomView.lineWidth=3.0;returncutomView;}return}(1)annotation(1)annotation--(void)mapView:(BMKMapView*)mapView*@paramviewannotation*@paramnewState*@paramoldState-(void)mapView:(BMKMapView*)mapViewannotationView:(BMKAnnotationView*)view-(void)mapView:(BMKMapView*)mapView-(void)mapView:(BMKMapView*)mapView*@paramoverlayViews新添加的overlay-(BMKOverlayView-(BMKAnnotationView*)mapView:(BMKMapView第四1.定位介BMKMapView类即可获得当前的2.第四1.定位介BMKMapView类即可获得当前的2.定位与地图结2.1.定位如果使用自定义定位图层的样式,您可在类BMKMapView2.2.定位-{[superBMKLocationViewDisplayParam*testParam=[[BMKLocationViewDisplayParamalloc]testParam.isRotateAngleValid=true;//跟随态旋转角度是否生效testParam.isAccuracyCircleShow=true;//精度圈是否显示testParam.locationViewImgName@"icon_compass";定位图标名称testParam.locationViewOffsetX=0;//定位图标偏移量(经度)testParam.locationViewOffsetY=0;//定位图标偏移量(纬度)];[testParam}{NSLog(@"进入跟随态_mapView.showsUserLocation=_mapView.userTrackingMode={NSLog(@"进入普通定位态}{NSLog(@"进入罗盘态_mapView.showsUserLocation=_mapView.userTrackingMode=_mapView.showsUserLocation=}_mapView.showsUserLocation=}2.3.停止3.定位与地图2.3.停止3.定位与地图分V2.1.0{_mapView.userTrackingMode=_mapView.showsUserLocation=}置对应的置对应的delegate,代码如下:onService方法来启动和关闭定位服务,代码如下:定位成功后,会在BMKUserLocationDelegate协议中er方法中返回定位经纬度,如下图所示4.事件监1定位*在地图View将要启动定位时,会调用此//开启定位服-{[_userLocation}//关闭定位服-{[_userLocation}-{[super//初始化定位信息}更多错误码详见:inc/BMKTypes.h更多错误码详见:inc/BMKTypes.h-错误名错误说-(void)mapView:(BMKMapView*)mapView-(void)mapView:(BMKMapView*)mapView第五线路查询,在线建议查询,短串分享等6大检索服务。BMKSearchDelegate协议,在一个时刻只能有一个BMKSearch第五线路查询,在线建议查询,短串分享等6大检索服务。BMKSearchDelegate协议,在一个时刻只能有一个BMKSearch接受回调消息,因此如果在不同的viewControllerBMKSearchBMKSearch的delegate做处理,代码如下:在检索到结果后,APIBMKSearchDelegate对应的接口,通知调用 *@paramtype*@paramerror错误号,@see *@paramresult*@paramerror错误号,@see }_search.delegatenil}*@paramresult*@paramerror错误号,@see-*@paramresult*@paramerror错误号,@see-*@paramresult*@paramerror错误号,@see-*@paramresult*@paramerror错误号,@see-*@paramerror错误号,@see*@paramresult*@paramerror错误号,@see*@paramerror错误号,@see-(void)onGetShareUrl:(NSString*)urlwithType:(BMK_SHARE_URL_TYPE)urlType1.兴趣点检Intere1.兴趣点检InterestPOI1.1.城市实现在ViewController.h中声明BMKSearch对象,并将#import"BMapKit.h"@interfacePoiSearchDemoViewController:UIViewController<BMKMapViewDelegate,BMKSearchDelegate>{IBOutletBMKMapView*_mapView;IBOutletUITextField*_cityText;IBOutletUITextField*_keyText;IBOutletUIButton*_nextPageButton;BMKSearch*_search;int}*@paramkey-(BOOL)poiSearchInCity:(NSString*)citywithKey:(NSString*)keyViewController.mBMKSearchdelegateViewController.mBMKSearchdelegateBMKSearchDelegate{_mapView.delegate=_search=[[BMKSearchalloc]_search.delegate=_cityText.text@"北京_keyText.text@"餐厅}{curPage=BOOLflag=[_searchpoiSearchInCity:_cityText.textwithKey:_keyText.textpageif(flag)_nextPageButton.enabled=true;NSLog(@"searchsuccess.");}_nextPageButton.enabled=false;NSLog(@"searchfailed!");}}{ 1.2.范围 1.2.范围*@paramkey在ViewController.h中声明BMKSearch对象,并将实现,在ViewController.h中声明BMKSearch对象,并将实现,ViewController.m-{[super_mapView.delegate=_search=[[BMKSearchalloc]_search.delegate=_keyText.text@"餐厅leftBottomPt.latitude39.920038;leftBottomPt.longitude=#import"BMapKit.h"BMKSearchDelegate>{IBOutletBMKMapView*_mapView;IBOutletUITextField*_keyText;IBOutletUIButton*_nextPageButton;BMKSearch*_search;int}rightTopPt.latitude=rightTopPt.latitude=rightTopPt.longitude=}{curPage=BOOLflag=[_searchpoiSearchInbounds:_keyText.textleftBottom:leftBottomPtrightTop:rightTopPtpageIndex:curPage];if(flag)_nextPageButton.enabled=true;NSLog(@"searchsuccess.");}_nextPageButton.enabled=false;NSLog(@"searchfailed!");}}-(void)onGetPoiResult:(NSArray*)poiResultListsearchType:(int)type{}1.3.周边前位置1.3.周边前位置3公里范围内的餐厅,具体参数设置和检索方法如下:*@paramkey-(BOOL)poiSearchNearBy:(NSString*)keycenter:(CLLocationCoordinate2D)ptCenterradius:(int)radiuspageIndex:(int)index;在ViewController.h中声明BMKSearch对象,并将实现在ViewController.h中声明BMKSearch对象,并将实现ViewController.m-{[super_mapView.delegate=_search=[[BMKSearchalloc]_search.delegate=_keyText.text@"餐厅ptCenter.latitude39.920038;ptCenter.longitude=radius=1000;_cityText.text=[NSString#import"BMapKit.h"IBOutletBMKMapView*_mapView;IBOutletUITextField*_cityText;IBOutletUITextField*_keyText;IBOutletUIButton*_nextPageButton;BMKSearch*_search;int}}}{{}{radius=}curPage=if(flag)_nextPageButton.enabled=true;NSLog(@"searchsuccess.");}_nextPageButton.enabled=false;NSLog(@"searchfailed!");}}-(void)onGetPoiResult:(NSArray*)poiResultListsearchType:(int)type{}1.4.展示检索结1.4.展示检索结-(void)onGetPoiResult:(NSArray*)poiResultListsearchType:(int)type{NSArray*array=[NSArrayarrayWithArray:_mapView.annotations];[_mapViewremoveAnnotations:array];if(error==BMKErrorOk)BMKPoiResult*result=[poiResultListfor(inti=0;i<result.poiInfoList.count;i++)BMKPoiInfo*poi=[result.poiInfoList-(BMKAnnotationView*)mapView:(BMKMapView*)view{//生成重用标示NSString*AnnotationViewID=BMKAnnotationView*annotationView=[view//if(annotationView==nil)annotationView=[[[BMKPinAnnotationViewalloc]initWithAnnotation:annotationreuseIdentifier:AnnotationViewID]autorelease];}BMKPointAnnotation*item=[[BMKPointAnnotationalloc]init];item.coordinate=poi.pt;item.title=;if(i==0){_mapView.centerCoordinate=}[item}}}}1.5.事件1.5.事件属性名类说*@paramtype*@paramerror错误号,@see-(void)onGetPoiResult:(NSArray*)poiResultListsearchType:(int)type-(void)mapView:(BMKMapView*)mapView{[mapViewsetNeedsDisplay];}annotationView.centerOffset=-(annotationView.frame.size.height*0.5));annotationView.annotation=annotation;annotationView.canShowCallout=annotationView.draggable=return}2.地理编地理编码)指的是将统计资料或是地址信息建立空间坐标关系的2.1.正2.地理编地理编码)指的是将统计资料或是地址信息建立空间坐标关系的2.1.正向地理编earchDelegate#import"BMapKit.h"@interfaceGeocodeDemoViewController:UIViewController<BMKMapViewDelegate,BMKSearchDelegate>{IBOutletBMKMapView*_mapView;IBOutletUITextField*_cityText;IBOutletUITextField*_addrText;BMKSearch*_search;}*@param *@param -(BOOL)geocode:(NSString*)addr在ViewController.m中创建BMKSearch在ViewController.m中创建BMKSearch对象,设置对应的delegate,调用BMKSearchDelegate{_mapView.delegate=_search=[[BMKSearchalloc]_search.delegate=_cityText.text@"北京}//{BOOLflag=[_searchgeocode:_addrText.textwithCity:_cityText.text];if(flag){NSLog(@"Geocodesearch}NSLog(@"Geocodesearch}}{if(error==0)_mapView.centerCoordinate=NSString*titleStr;NSString*showmeg;titleStr@"正向地理编码";showmegNSStringstringWithFormat:@"经度:%f,度UIAlertView*myAlertViewUIAlertViewallocinitWithTitle:titleStrmessage:showmegdelegate:selfcancelButtonTitle:nilotherButtonTitles:@"确定[myAlertView2.2.反向地理编2.2.反向地理编*@paramcenter-}}earchDelegateearchDelegate,在ViewController.m中创建对象,设置对应的delegate,调用-{[super_mapView.delegate=_search=[[BMKSearchalloc]_search.delegate=_coordinateXText.text=_coordinateYText.text=}//{CLLocationCoordinate2Dpt=(CLLocationCoordinate2D){0,if(_coordinateXText.text!=nil&&_coordinateYText.text!=nil)pt=(CLLocationCoordinate2D){[_coordinateYText.textfloatValue],}BOOLflag=[_searchreverseGeocode:pt];if(flag){#import"BMapKit.h"BMKSearchDelegate>{IBOutletBMKMapView*IBOutletUITextField*_coordinateXText;IBOutletUITextField*_coordinateYText;BMKSearch*_search;}NSLog(@"ReverseGeocodesearchNSLog(@"ReverseGeocodesearch}NSLog(@"ReverseGeocodesearch}}{if(error==0)_mapView.centerCoordinate=NSString*titleStr;NSString*showmeg;titleStr@"反向地理编码";showmeg=[NSStringmessage:showmegdelegate:selfcancelButtonTitle:nilotherButtonTitles:@"确定[myAlertViewshow];}}2.3.事件2.3.事件*@paramresult*@paramerror错误号,@see3.路径规3.路径规3.1.驾车earchDelegate协议,代码如下:#import"BMapKit.h"IBOutletBMKMapView*-(BOOL)drivingSearch:(NSString*)startCitystartNode:(BMKPlanNode*)startendCity:(NSString*)endCityendNode:(BMKPlanNode*)end;ViewController.mBMKSearchdelegateViewController.mBMKSearchdelegateBMKSearchDelegate-{[super_mapView.delegate=_search=[[BMKSearchalloc]_search.delegate=_startCityText.text@"北京_startAddrText.text@"天安门_endCityText.text@"北京_endAddrText.text@"百度大厦}{BMKPlanNode*start=[[[BMKPlanNodealloc]init]autorelease];=_startAddrText.text;BMKPlanNode*end=[[[BMKPlanNodealloc]init]autorelease];=_endAddrText.text;BOOLflag=[_searchdrivingSearch:_startCityText.textstartNode:startendCity:_endCityText.textendNode:end];if(flag)NSLog(@"search}NSLog(@"search}IBOutletUITextField*_startCityText;IBOutletUITextField*_startAddrText;IBOutletUITextField*_endCityText;IBOutletUITextField*_endAddrText;BMKSearch*_search;}}}earchDelegateearchDelegateViewController.mdelegatevingSearch方法发起驾车规划(含途经点)BMKSearchDelegate协-{[super_mapView.delegate=_search=[[BMKSearchalloc]#import"BMapKit.h"@interfaceWayPointRouteSearchDemoViewController:<BMKMapViewDelegate,{IBOutletUITextField*_startAddrText;IBOutletUITextField*_wayPointAddrText;IBOutletUITextField*_endAddrText;IBOutletBMKMapView*_mapView;BMKSearch*_search;}*@paramwayPointsArray途经点数组,存储BMKPlanNode信息的节点。-(BOOL)drivingSearch:(NSString*)startCity_search.delegate=_search.delegate=startAddrText.text@"天安门_wayPointAddrText.text@"东直门_endAddrText.text@"百度大厦}{BMKPlanNode*start=[[[BMKPlanNodealloc]init]autorelease];=_startAddrText.text;BMKPlanNode*end=[[[BMKPlanNodealloc]init]autorelease];=_endAddrText.text;1010个请求发送不成功。NSMutableArray*array=[[[NSMutableArrayalloc]initWithCapacity:10]BMKPlanNode*wayPointItem1BMKPlanNodeallocinitautorelease];wayPointItem1.cityName=@"北京";wayPointI=_wayPointAddrText.text;[arrayaddObject:wayPointItem1];BOOLflag_searchdrivingSearch:@"北京startNode:startendCity:@"北京"endNode:endthroughWayPoints:array];if(flag)NSLog(@"search}NSLog(@"search}}}3.2.公交 3.2.公交 BaiduMapApiTutorial/src/Chapter5/earchDelegateBaiduMapApiTutorial/src/Chapter5/earchDelegate-{[super_mapView.delegate=#import"BMapKit.h"IBOutletBMKMapView*_mapView;IBOutletUITextField*_startCityText;IBOutletUITextField*_startAddrText;IBOutletUITextField*_endCityText;IBOutletUITextField*_endAddrText;BMKSearch*_search;}-(BOOL)transitSearch:(NSString*)citystartNode:(BMKPlanNode*)start_search=[[BMKSearch_search=[[BMKSearchalloc]_search.delegate=_startCityText.text@"北京_startAddrText.text@"天安门_endCityText.text@"北京_endAddrText.text@"百度大厦}{BMKPlanNode*start=[[[BMKPlanNodealloc]init]autorelease];=_startAddrText.text;BMKPlanNode*end=[[[BMKPlanNodealloc]init]autorelease];=_endAddrText.text;BOOLflag=[_searchtransitSearch:_startCityText.textstartNode:startif(flag)NSLog(@"search}NSLog(@"search}}}3.3.步行3.3.步行earchDelegateearchDelegateViewController.mdelegate-{[super_mapView.delegate=_search=[[BMKSearchalloc]_search.delegate=#import"BMapKit.h"IBOutletBMKMapView*_mapView;IBOutletUITextField*_startCityText;IBOutletUITextField*_startAddrText;IBOutletUITextField*_endCityText;IBOutletUITextField*_endAddrText;BMKSearch*_search;}-(BOOL)walkingSearch:(NSString*)startCitystartNode:(BMKPlanNode*)startendCity:(NSString*)endCityendNode:(BMKPlanNode*)end;_startCityText.text@"_startCityText.text@"北京_startAddrText.text@"天安门_endCityText.text@"北京_endAddrText.text@"百度大厦{BMKPlanNode*start=[[[BMKPlanNodealloc]init]autorelease];=_startAddrText.text;BMKPlanNode*end=[[[BMKPlanNodealloc]init]autorelease];=_endAddrText.text;BOOLflag=[_searchwalkingSearch:_startCityText.textstartNode:startendCity:_endCityText.textendNode:end];if(flag)NSLog(@"search}NSLog(@"search}}{}3.4.事件3.4.事件*@paramresult*@paramerror错误号,@see*@paramresult*@paramerror错误号,@see*@param*@paramresult*@paramerror错误号,@see4.公交线路查4.1.公交4.公交线路查4.1.公交线路查earchDelegate#import"BMapKit.h"@interfaceBusLineSearchViewController:UIViewController<BMKMapViewDelegate,BMKSearchDelegate>{IBOutletBMKMapView*_mapView;IBOutletUITextField*_cityText;IBOutletUITextField*_busLineText;intcurrentIndex;BMKSearch*_search;}ViewController.mBMKSearchdelegateViewController.mBMKSearchdelegatebutype==2{[super_mapView.delegate=_search=[[BMKSearchalloc]_search.delegate=_cityText.text@"北京_busLineText.text=}首先发起poiBOOLflag=[_searchpoiSearchInCity:_cityText.textwithKey:_busLineText.textif(flag)NSLog(@"search}NSLog(@"search}}{if(error==BMKErrorOk)BMKPoiResult*result=[poiResultListobjectAtIndex:0];BMKPoiInfo*poi=nil;BOOLfindBusline=for(inti=0;i<result.poiInfoList.count;i++)poi=[result.poiInfoListobjectAtIndex:i];if(poi.epoitype==2){findBusline=YES;findBusline=YES;}}开始bueline{currentIndex=NSString*strKey=((BMKPoiInfo*)[_busPoiArrayBOOLflag=[_searchbusLineSearch:_cityText.textwithKey:strKey];if(flag){NSLog(@"search}NSLog(@"search}}}}{}4.2.事件1公交线路查4.2.事件1公交线路查询返回公交详细搜索结*busdetail搜索结*@parambusLineResult搜索结*@paramerror错误号,@see5.在线建议查5.1.在线建5.在线建议查5.1.在线建议查earchDelegate协议,代码如下:#import"BMapKit.h"{BMKSearch**@param *@param 在ViewController.m中创建BMKSearch对象,设置对应的在ViewController.m中创建BMKSearch对象,设置对应的delegate,调用ggestionSearchugBMKSearchDelegates{_mapView.delegate=_search=[[BMKSearchalloc]_search.delegate=sugText.text@"西单}sug{[sugTextBOOLflag=[_searchsuggestionSearch:sugText.text];if(flag){}}}返回suggestion{IBOutletUIButton*searchBtn;IBOutletUITextField*sugText;IBOutletUITableView*plainTableView;}5.2.事件5.2.事件*@paramresult*@paramerror错误号,@see6.短串分自V2.0.2开始,百度地图API提供短串分享功能。短串分享是指,用户搜索6.短串分自V2.0.2开始,百度地图API提供短串分享功能。短串分享是指,用户搜索结果分享”2个功能。6.1.POI点分POIearchDelegate、MFMessageComposeViewControllerDelegate协议,代码如下:#import<UIKit/UIKit.h>#import"BMapKit.h"@interfacePoiDetailShortUrlShareDemoViewController*@paramuidpoiPOIUID,生成一个短连接,用于分享。方法为:-poiDetailShareUrl:(NSString*)POIUID,生成一个短连接,用于分享。方法为:-poiDetailShareUrl:(NSString*)uid;参数uid点击[poi点分享]根据uid{BOOLflag=[_searchpoiDetailShareUrl:@"06d2dffda107b0ef89f15db6"];if(flag){NSLog(@"poiDetailShareUrlsearch}NSLog(@"poiDetailShareUrlsearch}}//返回短串分享-(void)onGetShareUrl:(NSString*)urlwithType:(BMK_SHARE_URL_TYPE)urlType{if(error=={poiNSString*geoName=@"故宫博物院poishowmegNSStringstringWithFormat:@"这里显示AlertUIAlertView*myAlertView=[[UIAlertViewalloc]initWithTitle:@"短串分享"message:showmegdelegate:selfcancelButtonTitle:nilotherButtonTitles:@"分享",@"IBOutletBMKMapView*_mapView;IBOutletUIButton*_poiShortUrlButton;BMKSearch*_search;}6.2.Geo点分6.2.Geo点分myAlertView.tag=1000;[myAlertViewshow];[myAlertViewrelease];}{NSLog(@"获取短串分享url错误}}GeoGeoearchDelegate、MFMessageComposeViewControllerDelegate协议,代码如下:s:(NSString*)address;参数location:共享点经纬度坐标;name:共享点的名称;a{NSString*#import<UIKit/UIKit.h>#import"BMapKit.h"@interfaceReverseGeoShortUrlShareDemoViewController:IBOutletBMKMapView*IBOutletUIButton*_reverseGeoShortUrlButton;BMKSearch*_search;bool}*@paramcoor*@paramname*@paramaddress-(BOOL)reverseGeoShareUrl:(CLLocationCoordinate2D)coorpoiName:(NSString*)nameNSString*}{pt.latitude=pt.longitude=geoName@"自定义泡泡名字}{BOOLflag=[_searchreverseGeoShareUrl:ptif(flag)NSLog(@"reverseGeoShortUrlsearch}NSLog(@"reverseGeoShortUrlsearch}}//返回短串分享-(void)onGetShareUrl:(NSString*)urlwithType:(BMK_SHARE_URL_TYPE)urlType{if(error=={showmegNSStringstringWithFormat:showmegNSStringstringWithFormat:@"这里

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论