ios 苹果和百度地图的相关使用

摘要:
同时由于苹果使用的是高德,不会像谷歌地图一样在国内乌龟一样的访问速度,确实做一些地图相关的东西,非常有吸引力。只是实现了显示一个百度地图的view。百度地图使用的是Objective-C++,这意味这必须要有一个.mm文件。

iOS中使用较多的3款地图,google地图、百度地图、苹果自带地图(高德)。其中苹果自带地图在中国使用的是高德的数据。苹果在iOS 6之后放弃了使用谷歌地图,而改用自家的地图。在国内使用的较多的就是百度、苹果自带地图(高德),以下总结下这两个。

一、苹果地图的使用

因为苹果使用的是高德的地图,加上苹果做的一些封装,使用起来也非常方便。不需要引入第三方框架,相比较之下,使用百度地图SDK会使源码与程序都 大10M多,这点很蛋疼。同时由于苹果使用的是高德,不会像谷歌地图一样在国内乌龟一样的访问速度,确实做一些地图相关的东西,非常有吸引力。

主要用到系统的两个框架:CoreLocation与MapKit。

1、CoreLocation实现定位 (没有UI的,只是负责一些数据)

Tips:

需要CLLocationManager定位管理器来管理定位。(开启与结束等)

使用模拟器时,需要设置经纬度:调试--》位置--》自定义位置 输入经纬度即可。(北京:北纬39.9”,东经116. 3”

定位代码如下:

  1. #import<CoreLocation/CoreLocation.h>
  2. @interfaceMyViewController()<CLLocationManagerDelegate>
  3. @property(nonatomic,strong)CLLocationManager*locMgr;
  4. @end
  5. @implementationMyViewController
  6. -(CLLocationManager*)locMgr
  7. {
  8. #warning定位服务不可用
  9. if(![CLLocationManagerlocationServicesEnabled])returnnil;
  10. if(!_locMgr){
  11. //创建定位管理者
  12. self.locMgr=[[CLLocationManageralloc]init];
  13. //设置代理
  14. self.locMgr.delegate=self;
  15. }
  16. return_locMgr;
  17. }
  18. -(void)viewDidLoad
  19. {
  20. [superviewDidLoad];
  21. //开始定位用户的位置
  22. [self.locMgrstartUpdatingLocation];
  23. }
  24. #pragmamark-CLLocationManagerDelegate
  25. /**
  26. *只要定位到用户的位置,就会调用(调用频率特别高)
  27. *@paramlocations:装着CLLocation对象
  28. */
  29. -(void)locationManager:(CLLocationManager*)managerdidUpdateLocations:(NSArray*)locations
  30. {
  31. //CLLocation中存放的是一些经纬度,速度等信息.要获取地理位置需要转换做地理位置编码.
  32. //1.取出位置对象
  33. CLLocation*loc=[locationsfirstObject];
  34. NSLog(@"CLLocation----%@",loc);
  35. //2.取出经纬度
  36. CLLocationCoordinate2Dcoordinate=loc.coordinate;
  37. //3.打印经纬度
  38. NSLog(@"didUpdateLocations------%f%f",coordinate.latitude,coordinate.longitude);
  39. //停止定位(省电措施:只要不想用定位服务,就马上停止定位服务)
  40. [managerstopUpdatingLocation];
  41. }
  42. @end

用CoreLocation还能实现:地理信息编码、反编码、经纬度间距离计算等。

2、MapKit上实现定位(有UI的,可以标记大头针、显示文字等)

MapView就是苹果自带的地图控件,拖控件或手码创建都行。

  1. #import<MapKit/MapKit.h>
  2. #import<CoreLocation/CoreLocation.h>
  3. @interfaceMyViewController()<MKMapViewDelegate>
  4. @property(weak,nonatomic)IBOutletMKMapView*mapView;
  5. @end
  6. @implementationMyViewController
  7. -(void)viewDidLoad
  8. {
  9. [superviewDidLoad];
  10. //1.跟踪用户位置(显示用户的具体位置)
  11. self.mapView.userTrackingMode=MKUserTrackingModeFollow;
  12. //2.设置地图类型
  13. self.mapView.mapType=MKMapTypeStandard;
  14. //3.设置代理
  15. self.mapView.delegate=self;
  16. }
  17. #pragmamark-MKMapViewDelegate
  18. /**
  19. *当用户的位置更新,就会调用
  20. *
  21. *@paramuserLocation表示地图上蓝色那颗大头针的数据
  22. */
  23. -(void)mapView:(MKMapView*)mapViewdidUpdateUserLocation:(MKUserLocation*)userLocation
  24. {
  25. userLocation.title=@"苍老师在这里";
  26. userLocation.subtitle=@"苍老师在这里,你知道吗?";
  27. CLLocationCoordinate2Dcenter=userLocation.location.coordinate;
  28. NSLog(@"%f%f",center.latitude,center.longitude);
  29. //设置地图的显示范围,让其显示到当前指定的位置
  30. MKCoordinateSpanspan=MKCoordinateSpanMake(0.021321,0.019366);//这个显示大小精度自己调整
  31. MKCoordinateRegionregion=MKCoordinateRegionMake(center,span);
  32. [mapViewsetRegion:regionanimated:YES];
  33. }
  34. @end

MapView中还能设置大头针,自定义大头针等,很多细节的功能。

二、百度地图的使用

百度给的一个Hello World。凑活看吧。只是实现了显示一个百度地图的view。需要引入一堆框架,如果是模拟器真机换来换去,还得切换静态库。(调试的话最好合并一下,且库有10M多)

http://developer.baidu.com/map/wiki/index.php?title=iossdk/guide/hellobaidumap

Tips:

需要到百度网站上申请key,且使用模拟器来定位的话,本人测试无反应(用百度给的demo)。。。。。。 建议使用真机!

百度地图使用的是Objective-C++,这意味这必须要有一个.mm文件。

可以根据功能来下载,这样可适当减少SDK的大小。

百度给了各个功能的示例代码,看着还是有些蛋蛋疼的,文件太多。http://developer.baidu.com/map/sdkiosdev-download.htm

1、添加百度地图的View

在delegate中didFinishLaunching中加入这段代码就行,百度Hello World给的代码都切开的。

  1. -(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions{
  2. //添加对BMKMapManager的初始化,并填入您申请的授权Key
  3. BMKMapManager*mapManager=[[BMKMapManageralloc]init];
  4. //如果要关注网络及授权验证事件,请设定generalDelegate参数
  5. BOOLret=[mapManagerstart:@"你的授权key,自己改"generalDelegate:nil];
  6. if(!ret){
  7. NSLog(@"地图管理器初始化失败!");
  8. }
  9. returnYES;
  10. }

viewController中使用也很简单

  1. #import"BMKMapManager.h"
  2. #import"BMKMapView.h"
  3. @interfaceXNViewController()
  4. {
  5. BMKMapView*_mapView;
  6. }
  7. @end
  8. @implementationXNViewController
  9. -(void)viewDidLoad{
  10. [superviewDidLoad];
  11. _mapView=[[BMKMapViewalloc]initWithFrame:CGRectMake(55,100,200,200)];
  12. [self.viewaddSubview:_mapView];
  13. }

2、使用百度地图定位

百度的东西还是看他自己给的demo吧,BaiduMap_IOSSDK_v2.3.0_Sample 项目里面的LocationDemoViewController类。

Tips:

用到了BMKLocationService

用法和苹果地图的有很多相似之处,很easy。

这里就不写了。

ios 苹果和百度地图的相关使用第1张

百度地图还可以实现:路径规划、云检索、路径规划、公交线路查询等,功能还是相当丰富的。

相关资料:

http://blog.csdn.net/totogo2010/article/details/7701026

http://www.cnblogs.com/syxchina/archive/2012/10/14/2723522.html

http://developer.baidu.com/map/sdk-ios.htm

查阅apple官方文档:CoreLocation,MapView

关于定位的原理:http://www.2cto.com/kf/201404/289744.html

免责声明:文章转载自《ios 苹果和百度地图的相关使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇如何控制el-image预览图片的大小PX4 飞控源码系统框架介绍下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android第三方推送引擎比较

所了解的第三方推送引擎有极光推送(JPush), 百度, 个推,腾讯信鸽等。根据了解,最专业的据说是极光推送,先看极光推送。 一、极光推送 https://www.jpush.cn/ 配置: 1.JPush网站创建相应包名的应用,然后网站会生成自动配置好的demo. 2.创建完毕后点击相应应用的"下载Android Example",导入Eclipse...

写出更好的 JavaScript 条件语句

1. 使用 Array.includes 来处理多重条件 //条件语句 functiontest(fruit) { if (fruit == 'apple' || fruit == 'strawberry') { console.log('red'); } } functiontest(fruit) { //把条件提取到数组中 co...

移动端iPhone系列适配问题的一些坑

完成移动端的开发项目之后,发现谷歌自带的调试器似乎没有什么太大的作用,整天借同事的苹果手机测bug,尽管同事不厌其烦,但还是觉得这iPhone系列适配问题适配到想逃逃逃,好在项目已经顺利完成,测试通过,下面就是开发过程中遇到的一些坑。 图片.png 图片.png 问题一:苹果手机上的input按钮自带渐变效果 一样的代码,为啥在苹果手机上的i...

百度竞价门再跟踪:违规医疗广告数量仍大幅增加

网易科技讯 2月18日消息,网易科技日前收到一份署名为反流氓软件联盟的《百度医疗医药广告统计报告》(以下简称报告),据该调研报告中显示,在百度医疗医药竞价排名广告违规被媒体曝光后,这类广告数量随后有所减少,不过在风波平息后,此类广告数量又大幅增加,并且现在仍有大量违规医疗广告。 医疗类广告数量高达遭曝光时两倍 百度在2008年11月因受到媒体曝光影响...

sicily 1144. 陶陶摘苹果

本周的实验课堂上作业,课前已经完成 Description 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。 现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设...

百度网盘禁止查看别人分享主页的资源收集解决办法

自从百度网盘关闭个人主页的分享功能后,收集别人百度网盘分享的资料就成一件困难的事情。 但是作者发现还有另外一个入口可以收集同行的的网盘资料。这个方法就是订阅同行的百度网盘帐号,订阅后就可以在网盘的分享动态里面看到别人的公开分享的资料,也可以转存到自已的网盘中,但是这个分享动态最多只显示250条。 第一步: 打开对应的分享链接,找到分享资源的人物链接,如图...