主业iOS/PHP,副业啥都玩,QQ:705719110,欢迎来撩!

iOS中百度地图SDK的使用

iOS开发 随风 159℃ 0评论

现在的很多app中都使用到了地图,比如百度地图、高德地图等,在这里我们介绍一下百度地图的使用。
其实在百度地图的API文档中介绍的已经非常详细了,从配置到一步一步的使用,我们这里只是简单的介绍一下,真正详细的使用还是请查询百度地图的API。
首先呢,需要在百度地图中获取一个app key(一般情况下三方的这种库都是需要获取key的)
按照百度地图API文档中的方法将需要的文件拖进工程中(百度提供了好几种的环境搭建方法),但是要注意一点很重要的,静态库中采用C++实现,因此需要保证工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm)。这样就搭建好了环境。
下面介绍几个方法:

如何显示地图并定位

首先需要在项目的根delegate类里就要通过BMKMapManager这个类来实现地图引擎的启动,代码如下:

接下来要做的就是添加地图视图,在需要地图的类头文件里添加如下代码(这个类应该是.mm文件)

一些成员后面要用到先不提,这里只是实现地图的显示和定位,然后在.mm文件里,在@implementationtestViewController的前面添加这些代码

有些代码对实现定位没有帮助,但是后面要用到,并且demo示例代码也是这么写的,所以引入了没有坏处,之后给这个类添加一个方法,获取图片资源用:

下面才是真正添加地图的地方:

然后我在ib拖拽了几个按钮,功能显而易见,编译运行就应该成功了.

如何定位获取经纬度和 如何通过定位得到城市,国家,街道等信息

这两个问题一段代码就可以解决,所以放在一起,当添加了地图引擎和设定setShowsUserLocation:YES以后,地图已经在定位了,通过代理方法可以获得经纬度信息,并通过经纬度信息我可以获得街道城市等信息:

其实,街道地址是不准确的,因为精度和纬度是不正确的,地址来源于经纬度,至于为什么不正确应该是因为”火星坐标系”,这里不做深入研究。

如何通过搜索地理名获得坐标

这个例子里是通过点击公交按钮,获得textfield里面内容地点到三里屯的公交路线信息,起点是textfield里面的内容,终点固定是三里屯。
事实上,获取路线需要得到起点的坐标,所以通过地理名获得坐标是后面获取路线的第一步。
在搜索的时候调用:

geocode第一个参数是fromeText,默认我写的是新中关,withCity是定位获得的城市,调用这个方法以后,结果会传给代理方法:

这里可以看到好像百度地图api的结果都不是直接获得的,而是传给对应的代理方法。接下来的路线获取也一样.

如何实现公交和驾车路线搜索

大致就是这样的逻辑,通过geocode函数得到地名坐标,然后通过drivingSearch函数设定起始点和结束点,并调用代理方法来利用这个路线结果,下面就是代理方法:

这样驾车的路线就应该可以获取了,编译运行可以看到路线图,同时可以从打印的数组信息得到提示信息,内容就是地图上点击节点弹出的内容
同理,公交按钮的代码:

公交路线代理方法,这里和驾车路线不同的是,获取的提示信息不在一起,分上车信息和下车信息:

火星坐标系统貌似只对获取的坐标有修正,对地图可见的内容,如大头针没有修正,测试可见路线起点是正确的定位位置,虽然由经纬度得到的街道信息确实是偏移的,可能地图又再次做了修正
关于从当前位置到目标的路线图,我做的处理就是定位按钮点击后,把现在位置的坐标传给了起始点然后在通过公交线路和驾车线路来实现线路的查询,总结完毕。

以上只是简单的介绍了一下,详细的请查询百度地图API文档!

转载请注明:怼码人生 » iOS中百度地图SDK的使用

喜欢 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址