百度地图 IOS版开发经验分享

最近刚完成app中地图的应用,感受很是的曲折,折腾了好久,刚才开始一直不能成功使用百度地图api,报一大堆的错误,后来换到高德地图,又发现服务端使用的百度的经纬度,又从高德换回百度,泪奔。api

这里简单比较下高德地图和百度地图,我的以为高德地图api导入真是很是简单,并且还分红几种版本;相比较百度地图api的导入就繁琐多了,主要是导入静态库文件,初次使用真的是繁琐,百度提供了三种导入方式,最后仍是以为合并静态库文件比较方便,否则要在xcode中做不少设置,并且还要根据各类状况更改,因此我建议仍是选择第二种方式。xcode

使用百度地图的API时,最好去官方技术论坛下载两个pdf文件:IOS开发教程-第一部分和第二部分的pdf文件,这两个文件太有用了,不要去看demo,也不要去搜索教程,就用这个两个文件就够了,没事不要去论坛提问,很可贵到回复,都是一堆官方的回复,几乎无用。app

iOS开发教程-第一部分.pdf 主要是如何申请key,和如何导入API到xcode工程。这里必定要按照pdf中的指示去作,不然问题多多。导入静态库的时候最好选择第二种方式,维护起来比较简单。有些配置(好比libary search paths和header search paths)在你导入的时候xcode已经为你设置好了,因此能够不用考虑函数

若是导入过程完美,后面开发起来都是十分简单的事情,百度api介绍也比较完整,用起来很顺手。code

iOS开发教程-第二部分.pdf 主要就是对百度地图功能的各类介绍,这个你不会获得所有的可用的东西,须要结合demo一块儿用,先从pdf中找到你须要的功能,有个大致的了解,再去看demo中的代码,而后再实际应用到你的工程中。教程

列几个遇到的问题开发

1.百度读取CLLocationCoordinate2D的问题,最新版本(V2.5)CLLocationCoordinate2DMake的两个参数与以前函数的相反,这个困扰了我好久,之前版本跟如今版本的程序,用同一个经纬度,旧版的能够显示标注,新版的却不能够。it

例如:旧版是这样子io

[self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(118.144992,24.497386)];百度地图

新版要这样才行

[self.mapView setCenterCoordinate:CLLocationCoordinate2DMake(24.497386,118.144992)];

不知道为何百度要这样作

 

2.BMKMapViewDelegate 的方法

- (void)mapView:(BMKMapView *)mapView didSelectAnnotationView:(BMKAnnotationView *)view

这个在点击同一个标注之后只会执行一次,要点击其余的标注再来点击才会执行

后来发现能够在每次执行的时候调用一下这个  [mapView deselectAnnotation:view.annotation animated:YES];

这样同一个标注能够一致执行了,别问我为何须要这个功能,由于我把标注的气泡隐藏了,只能经过点击标注来实现了。

 

3.计算屏幕内的标注方法,这里直接上代码了,实验过是可用的

首先将经纬度转化为屏幕内坐标

CGPoint point = [self.mapView convertCoordinate:annotationitem.coordinate toPointToView:self.mapView];

而后判断坐标是否在地图可见范围内

CGRectContainsPoint(CGRectMake(0, 44, self.mapView.frame.size.width, self.mapView.frame.size.height-44-49), point)

 

4.BMKMapViewDelegate 的方法

- (BMKAnnotationView *)mapView:(BMKMapView *)view viewForAnnotation:(id<BMKAnnotation>)annotation

使用此方法时,均可能会用到自定义的BMKAnnotationView类,可是请在给自定义类BMKAnnotationView,调用新定义的方法或属性时,先执行

annotationView.annotation = annotation;

保证在你要执行的其余代码前面就好

 

-------------------------------------------------------------------------------------------------------------------------------

因为实际并无使用到百度地图太多复杂的功能,因此也只能总结到这里了。。。。 

相关文章
相关标签/搜索