百度地图 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;
保证在你要执行的其他代码前面就好
-------------------------------------------------------------------------------------------------------------------------------
由于实际并没有使用到百度地图太多复杂的功能,所以也只能总结到这里了。。。。
百度地图 IOS版开发经验分享的更多相关文章
- iOS开发---集成百度地图完善版
一.成为百度的开发者.创建应用 http://developer.baidu.com/map/index.php?title=首页 (鼠标移向 然后选择你的项目需要的功能 你可以在里面了解到你想要使用 ...
- 百度地图ios环境配置
1 前言 由于工作需要,要开始捣腾百度地图了,今天上午初始牛刀,各种碰壁,无奈之下,中午睡了一觉,养精蓄锐,以备下午大战三百回合,所幸下午中午把百度地图Demo捣腾出来了,在此与大家分享,环境搭建教程 ...
- 百度地图 iOS SDK - 坐标转换方法
百度地图 Android SDK 要么 iOS SDK 或各种 API 工具产品,我们使用百度自己的加密坐标系. 员在使用过程中,位置点都是通过 GPS 或者其它途径获取的.所以与百度地图所使用的坐标 ...
- 百度地图js版定位控件
一 概述 百度地图在最新版已加入浏览器定位控件,个人认为应该是既高德地图更新了一个浏览器也能定位功能后,百度不甘落后自己简简单单,草草写了个这个功能的定位控件 GeolocationControl 这 ...
- 百度地图--JS版
百度地图JS版本 ----选择关键字地图展示对应地址---- CSS body, html { width: %; height: %; margin: ; font-family: "微软 ...
- 百度地图移动版API 1.2.2版本(Android)地图偏移的最佳解决办法
Import import com.baidu.mapapi.CoordinateConvert;import com.baidu.mapapi.GeoPoint; Code GeoPoint p = ...
- 调用百度、高德地图App,百度地图网页版,App定位
https://www.jianshu.com/p/296a3995adc2 https://blog.csdn.net/qq_26598821/article/details/51087785 ht ...
- cordova百度地图定位Android版插件
本插件利用百度地图提供的定位功能进行Android版手机定位. 为什么没有iOS版? 因为iOS版有官方的定位插件cordova-plugin-geolocation可以使用. 请参照:cordova ...
- ios添加百度地图方法
Hello BaiduMapiOS SDK 引入头文件 引入静态库文件 引入系统framework 引入mapapi.bundle资源文件 初始化BMKMapManager 创建BMKMapView ...
随机推荐
- linux基本命令学习笔记
这个几天在研究linux的常用基本命令.以下是此时间内的幻灯片截图笔记,在这里留个脚印. linux 常用命令 1,命令的基本格式 2,文件处理命令 3,文件搜索命令 4,帮助命令 5,压缩解压缩命令 ...
- iptables 详解
一:前言 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种.无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘.而我们的任务就是需要去定义到底防 ...
- QQ一键登录功能的实现过程
QQ登录的思路: 当qq登陆成功后,QQ会给我们返回一个唯一的用户标识:openId,当用户授权QQ时,判断 if(已经有openId){ 跳转到登陆后的页面. }else if(没有openId){ ...
- iTOP-4412开发板低功耗高性能的开源硬件平台——上手评测
iTOP-4412开发板现在比较热门的开发板,笔者近期入了一套.也推荐给初学ARM的朋友学习,4412开发板搭载三星Exynos四核处理器,配备1GB内存,4GB固态硬盘EMMC存储,兼具快速读取与超 ...
- java poi read write xlsx
package myjava; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExce ...
- c# 参数传递
c#类型有值类型与引用类型. 无论哪种类型的变量,作为方法的参数进行传递时,默认是以"值传递"方式来传递的. 传递给方法的形参,在执行时都会新创建一个局部变量,然后接受实参的值, ...
- Elastic search入门
首先是下载elasticsearch https://www.elastic.co/downloads,解压: 然后下载了中文分析器ik,github上搜索elasticsearch-ik就能找到,h ...
- 【MVC 4】6.SportsSore:导航
作者:[美]Adam Freeman 来源:<精通ASP.NET MVC 4> 前面的文章[MVC 4]5.SportsSore —— 一个真实的应用程序 建立了 Sports ...
- MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- 安装多个版本的unity
版本特性导致新版本Unity打开老版本的项目工程报错,所以最好在电脑上安装多个不同版本的Unity 方法一 安装目录命名:Unity_3.5 , Unity_4.3.1 确保默认例子的安装路径分开C: ...