基于iOS的百度地图APP开发PPT_第1页
基于iOS的百度地图APP开发PPT_第2页
基于iOS的百度地图APP开发PPT_第3页
基于iOS的百度地图APP开发PPT_第4页
基于iOS的百度地图APP开发PPT_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

1、简介百度地图APP开发过程:申请密钥和配置出览显示地图 通过代码创建百度地图控件覆盖物事件地图图层工具服务坐标转换演示基于iOS的百度地图APP开发是一套由OC语言编写的应用程序APP,它能够帮助人们在通过手机软件进行定位、地址搜索、路程规划和查询、提供云服务等功能的地图应用程序。百度地图APP不仅包含构建地图的基本功能接口,还提供了完备的地图功能,便于更好的使用地图,便捷的找到所求。通过地址 http:/ 进行开发者信息认证,审批在3天左右。对选中左侧导航栏 “创建应用”选择iOS SDK,设置应用配置,效果如图。环境配置: 前往百度地图开放平台http:/ 下载最新的iOS百度地图SDK。

2、创建项目,解压SDK文件,导入头文件、静态库文件、framework库文件、mapapi.bundle资源文件,设置plist配置,需要将任意一个.m后缀的文件改名为.mm。效果如下图:一、引用百度地图一、引用百度地图APIAPI文件文件当引用地图API文件时,需要使用自己申请的API密钥。 / 创建百度地图主引擎类对象(前提) BMKMapManager *manager=BMKMapManager allocinit; BOOL ret=manager start:“3iEjlY6WYtrmyfanATpTFFcZpLt4qqAF” generalDelegate:self; if (!r

3、et) NSLog(manager start failed); 设置了generalDelegate的参数为self,在如下两个函数中监听网络状态和key的授权认证状态,代码如下。- (void)onGetNetworkState:(int)iError if (0 = iError) NSLog(联网成功); else NSLog(onGetNetworkState %d,iError); - (void)onGetPermissionState:(int)iError if (0 = iError) NSLog(授权成功); else NSLog(onGetPermissionState

4、 %d,iError); 二、创建二、创建BMKMapViewBMKMapView引入BaiduMapAPI_Map/BMKMapComponent.h头文件,代码创建mapViewAPI并添加到父视图上,代码如下。 /添加地图 self.mapView=BMKMapView allocinitWithFrame:CGRectMake(0, CGRectGetMaxY(_endAddressTF.frame)+5, UIScreen mainScreen.bounds.size.width, UIScreen mainScreen.bounds.size.height-CGRectGetMax

5、Y(_endAddressTF.frame)-5); /显示地图的类型为普通图 self.mapView.mapType=BMKMapTypeStandard; /设置当前类为mapView的代理对象 self.mapView.delegate=self; /添加到父视图上 self.view addSubview:_mapView;三三、自定义地图样式并显示地图、自定义地图样式并显示地图/自定义地图样式- (void)customMapStyle /设置自定义地图样式,会影响所有地图实例 /注:必须在BMKMapView对象初始化之前调用 NSString* path = NSBundle

6、mainBundle pathForResource:custom_config_清新蓝 ofType:; BMKMapView customMapStyle:path;显示地图显示地图 完成以上步骤,运行工程即可查看百度地图,如右图所示: 模拟器上运行的地图,在地图双击鼠标左键即可将地图放大一个级别,option+鼠标左键即可缩放或者旋转地图,shift+Option+鼠标左键即可改变地图的俯视角度。百度地图上负责与地图交互的UI元素称为控件控件。在主控制器中添加自定义UI控件,实现外部操作与按钮等控件的响应事件方法。 地图API中提供的控件有:OverlayOverlay:覆盖物的抽象基类

7、抽象基类,此类不可实例化,所有的覆盖物均继承此类的方法。MarkerMarker:标注标注表示地图上的点,可自定义标注的图标。 LabelLabel:表示地图上的文本标注文本标注,您可以自定义标注的文本内容。 PolylinePolyline:表示地图上的折线折线。PolygonPolygon:表示地图上的多边形多边形。多边形类似于闭合的折线,另外您也可以为其添加填充颜色。 InfoWindowInfoWindow:信息窗口信息窗口也是一种特殊的覆盖物。注意:同一时刻只能有一个信息窗口在地图上打开。 可以使用BMap.Map.addOverlay()BMap.Map.addOverlay()方

8、法向地图添加覆盖物,使用BMap.Map.removeOverlay()BMap.Map.removeOverlay()方法移除覆盖物,注意此方法不适用于InfoWindowInfoWindow。 在地图中自定义UI控件:property (nonatomic,strong)UITextField *startCityTF;property (nonatomic,strong)UITextField *startAddressTF;property (nonatomic,strong)UITextField *endCityTF;property (nonatomic,strong)UITex

9、tField *endAddressTF;property (nonatomic,strong)BMKMapView *mapView;property(nonatomic, assign) CLLocationManager *distanceFilter;/声明定位服务对象属性(负责定位)property (nonatomic,strong)BMKLocationService *locationService;/声明地理位置搜索对象(负责地理编码)property (nonatomic,strong)BMKGeoCodeSearch *getCodeSearch;/声明路线搜索服务对象p

10、roperty (nonatomic,strong)BMKRouteSearch *routeSearch;/ 开始的路线检索节点property (nonatomic,strong)BMKPlanNode *startNode;/ 目标路线检索节点property (nonatomic,strong)BMKPlanNode *endNode;控件添加后,如右图所示:可通过“开始定位”按钮,可以定位当前所在位置,在模拟器中由于没有GPS可以通过Debug-location-Custom location手动设置进行定位。所有叠加或覆盖到地图的内容,我们统称为地图覆盖物覆盖物。如标注、矢量图形元

11、素(包括:折线和多边形)、信息窗口等。覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动。 地图API提供了如下几种覆盖物: OverlayOverlay:覆盖物的抽象基类抽象基类,此类不可实例化,所有的覆盖物均继承此类的方法。MarkerMarker:标注标注表示地图上的点,可自定义标注的图标。 LabelLabel:表示地图上的文本标注文本标注,您可以自定义标注的文本内容。 PolylinePolyline:表示地图上的折线折线。PolygonPolygon:表示地图上的多边形多边形。多边形类似于闭合的折线,另外您也可以为其添加填充颜色。 InfoWindowInfoWind

12、ow:信息窗口信息窗口也是一种特殊的覆盖物。注意:同一时刻只能有一个信息窗口在地图上打开。 可以使用BMap.Map.addOverlay()BMap.Map.addOverlay()方法向地图添加覆盖物,使用BMap.Map.removeOverlay()BMap.Map.removeOverlay()方法移除覆盖物,注意此方法不适用于InfoWindowInfoWindow。 百度地图API中的每一个对象都含有addEventListeneraddEventListener方法,您可以通过该方法来监听对象事件。例如,BMap.MapBMap.Map包含 clickclick、dblclic

13、kdblclick等事件。在特定环境下这些事件会被触发,同时监听函数会得到相应的事件参数e,比如当用户点击地图时,e e参数会包含鼠标所对 应的地理位置pointpoint。有关地图API对象的事件,请参考完整的API参考文档。 addEventListeneraddEventListener方法有两个参数:监听的事件名称和事件触发时调用的函数。 地图可以包含一个或多个图层,每个图层在每个级别都是由若干张图块组成的,它们覆盖了地球的整个表面。在最低的缩放级别(级别 1)中,整个地球由 4 张图块组成。随着级别的增长,地图所使用的图块个数也随之增多。 百度地图中提供一个BMap.TileLaye

14、r类,可以实现用户自定义图层功能。可以在百度地图上叠加一层自定义的图块。以下代码在每个图块的所有缩放级别上显示一个简单的透明叠加层,使用浮动红色小水滴表示图块的轮廓。varvarmap=newnewBMap.Map(containercontainer); ; /创建地图实例varvarpoint=newnewBMap.Point(116.404,39.915); /创建点坐标map.centerAndZoom(point,15); /初始化地图,设置中心点坐标和地图级别varvartilelayer=newnewBMap.TileLayer(); /创建地图层实例tilelayer.getT

15、ilesUrl=functionfunction() /设置图块路径returnreturnlayer.giflayer.gif;map.addTileLayer(tilelayer); /将图层添加到地图上百度地图提供了交互功能更为复杂的“工具”,它包括 PushpinTool:标注工具标注工具。通过此工具用户可在地图任意区域添加标注。 DistanceTool:测距工具测距工具。通过此工具用户可测量地图上任意位置之间的距离。 DragAndZoomTool:区域缩放工具区域缩放工具。此工具将根据用户拖拽绘制的矩形区域大小对地图进行放大或缩小操作。 工具类在初始化时需要提供地图实例参数,以便

16、使工具在该地图上生效。您可以在地图上添加多个工具,但同一时刻只能有一个工具处于开启状态。标注工具和测距工具在完成一次操作后将自动退出开启状态,而区域缩放工具可以自行配置是否自动关闭。varvarmap=map=newnewBMap.MapBMap.Map(container);(container); map.centerAndZoom(newBMap.Point(116.404,39.915),1map.centerAndZoom(newBMap.Point(116.404,39.915),15);5);varvarmyDis=myDis=newnewBMap.DistanceTool(ma

17、p);BMap.DistanceTool(map);myDis.open();myDis.open();地图服务是指那些提供数据信息的接口,比如本地搜索、路线规划等等。百度地图API提供的服务有: LocalSearch:本地搜索本地搜索,提供某一特定地区的位置搜索服务比如在北京市搜索“公园”。TransitRoute:公交导航公交导航,提供某一特定地区的公交出行方案的搜索服务。DrivingRoute:驾车导航驾车导航,提供驾车出行方案的搜索服务。WalkingRoute:步行导航步行导航,提供步行出行方案的搜索服务。Geocoder:地址解析地址解析,提供将地址信息转换为坐标点信息的服务。LocalCity:本地城市本地城市,提供自动判断您所在城市的服务。TrafficControl:实时路况控件实时路况控件,提供实时和历史路况信息服务。搜索类的服务接口需要指定一个搜索范围,否则接口将不能工作。因目前各家地图API服务商都沿用不同的坐标体系,故客户在更换API服务商或对各家API性能进行测试的时候会遇到较大的障碍。因此百度地图提供 坐标转换工具,使您可以方便地将不同的坐标体系转换为百度地图标准坐标。极大地降低您更换API服务的成本,同时扩大了可选择范围和自由度。目前百度地图坐标转换工具支持以下API服务商所采用的坐标体系:MapbarMapabc51ditu谷歌请求接口

温馨提示

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

评论

0/150

提交评论