返回
科迅教育
置顶
招生热线:400-800-2181

学校地址:江苏省南通市人民中路23-6号新亚大厦三楼

南通iOS开发培训哪家好

194 2020-03-31 09:04:58

学习笔记

近年来,基于iOS系统的智能手机用户爆炸式地增长,涉及地图功能需求的旅游导航类、物流类、生活服务类APP使用频率越来越高,要求开发者必须能熟练运用地图公司提供的地图API来开发地图功能。目前主流的地图公司均提供地图开发API。本文主要以百度地图API为例,阐述如何在封闭的iOS系统中,进行地图类APP的开发应用。

百度地图提供了非常完善的API,我们可以根据自己项目的需求选择百度地图提供的API,其中包含的iOS SDK开发工具与服务,提供了应用软件开发中所需的地图功能的实现、定位、搜索、路线规划等,可应用于大多数终端设备和大多数种操作系统下的地图应用开发。本文阐述如何运用百度iOS SDK创建地图以及添加相关服务功能。


在引用地图API文件之前,首先要去注册百度地图开发者,创建百度地图开发应用,得到百度地图API密匙。在cocoaPods导入百度SDK。

Platfor:ios,6.0

Pod ‘BaiduMapKit

然后对项目plist进行配置,并在AppDelegate.m中导入头文件:

#import

运用didFinishLaunchingWithOptions方法创建一个百度地图对象,代码如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

//创建并初始化一个对象

BMKMapManager *MyManager = [[BMKMapManager alloc] init];

//启动地图

BOOL MySuccess = [MyManager start:@”百度地图AK” generalDelegate:nil];

if (!MySuccess) {

NSLog(@”创建地图失败”);

}

return YES;

}

创建百度地图主对象时,将generalDelegate的参数设置为self,主要是为了在onGetNetworkState和onGetPermissionState两个函数中侦听网络状态和获得密匙(key)的认证状态,代码如下:

-(void)onGetNetworkState:(int)MyError

{

if (0 == MyError) {

NSLog(@”地图系统联网成功!”);}

else{

NSLog(@”onGetNetworkState启动失败,编号%d”, MyError); }

}

-(void)onGetPermissionState:(int) MyError

{

if (0 == MyError) {

NSLog(@”地图系统成功!”); }

else {

NSLog(@”onGetPermissionState启动失败,编号: %d”, MyError);}

}



在引入BaiduMapAPI_Map/BMKMapComponent.h头文件后,声明BMKMapView并添加到父视图上,进行地图初始化:

BMKLocationViewDisplayParam *LclShow = [[BMKLocationViewDisplayParam alloc] init];

LclShow.isRotateAngleValid = true;

LclShow.isAccuracyCircleShow = true;

LclShow.locationViewOffsetX = 0;

LclShow.locationViewOffsetY = 0;

[_mapView updateLocationViewWithParam: LclShow];

完成以上步骤,运行即可看到生成的百度地图。


在主控制器中添加覆盖物、工具和自定义UI控件,可实现外部操作与按钮等控件的响应事件方法。

信息窗口、标注、矢量元素等均为覆盖物,其本身拥有地理坐标,如果我们对地图进行缩放操作、拖动地图操作,它们会发生相对应的变化。如果要增加覆盖物,可使用addOverlay()方法,如果要删除覆盖物,则使用removeOverlay()方法。


另外,百度地圖集成很强交互功能的“工具”,它涵盖有:测距工具DistanceTool、标注工具PushpinTool、区域缩放工具DragAndZoomTool。

应注意的是,初始化“工具”类,必须按照地图所要求的实例参数来提供,才能使“工具”在该地图上生效。可以在地图上同时添加数个“工具”,但同一时刻仅有一个“工具”处于开启状态。

区域缩放工具却可以自行配置是否自动关闭,而标注工具和测距工具在完成一次运行后会自动退出开启状态。

var Lclmap = new BMap.Map(“container”); // 生成新的地图对象

Lclmap.centerAndZoom(new BMap.Point((110.390, 50.870),12);//110.390表示经度,50.870表示纬度,显示地图

var LclGongJu = new BMap.DistanceTool(Lclmap);

LclGongJu.open();


百度地图API的事件机制中提供了addEventListener方法,每一个对象都包含该方法,并且运用这个方法来侦听对象的事件。addEventListener方法有2个参数:(1)侦听的事件名;(2)当事件触发时所需调用的函数。例如,Bmap.Map包含着mousemove,rightclick等事件。当这些事件被触发时,侦听函数会获得对应的事件参数[3]。


因为百度地图对隐私比较注重,通过截屏出来的图片没有地图图层。解决的思路是,百度地图API中有截图的方法,可以通过地图管理对象调截图方法,如果项目中需求图片还有除地图之外的信息,就需要将两个图片进行拼接,才能得到想要的图片。

本文重点讨论了在iOS系统中,如何运用百度地图API创建地图功能,向地图中添加覆盖物、工具、控件,以及侦听事件、自定义图层。熟练运用和掌握这些地图API,对于在APP中内嵌地图功能,提高开发效率,降低地图类功能的开发成本具有重要意义和实践推广价值。


文中图片素材来源网络,如有侵权请联系删除

免费提供问答解答,帮您轻松解决难题

相关新闻推荐

申请免费试听

只要一个电话

我们为您免费回电

立即申请
刷新
图形验证
关闭
>>
拖动左边滑块完成上方拼图