zoukankan      html  css  js  c++  java
  • 百度地图 IOS版开发经验分享

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

    这里简单比较下高德地图和百度地图,个人觉得高德地图api导入真是非常简单,而且还分成几种版本;相比较百度地图api的导入就繁琐多了,主要是导入静态库文件,初次使用真的是繁琐,百度提供了三种导入方式,最后还是觉得合并静态库文件比较方便,不然要在xcode中作很多设置,而且还要根据各种情况更改,所以我建议还是选择第二种方式。

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

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

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

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

    列几个遇到的问题

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

    例如:旧版是这样子

    [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;

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

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

    由于实际并没有使用到百度地图太多复杂的功能,所以也只能总结到这里了。。。。 

  • 相关阅读:
    Power BI 根据用户权限动态生成导航跳转目标
    Power BI Tooltips 增强功能
    Power BI refresh error “could not load file or assembly…provided impersonation level is invalid”
    SQL 错误代码 18456
    如何使用SQL Server Integration Services从多个Excel文件读取数据
    通过表格编辑器将现有表引入Power BI数据流
    Power BI 中动态增长的柱状图
    ambari2.7.3离线安装hdp3.1.0时,ambari-hdp-1.repo中baseurl无值
    ambari 安装 cannot download file mysql-connector-java from http://8080/resource/mysql-connector-java.jar
    洛谷P4180 [BJWC2010]严格次小生成树
  • 原文地址:https://www.cnblogs.com/Longkin/p/4130171.html
Copyright © 2011-2022 走看看