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

一、苹果地图的使用

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

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

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

Tips:

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

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

定位代码如下:

    #import <CoreLocation/CoreLocation.h>  @interface MyViewController () <CLLocationManagerDelegate>  @property (nonatomic, strong) CLLocationManager *locMgr;  @end  @implementation MyViewController  - (CLLocationManager *)locMgr  {  #warning 定位服务不可用  if(![CLLocationManager locationServicesEnabled]) return nil;  if (!_locMgr) {  // 创建定位管理者  self.locMgr = [[CLLocationManager alloc] init];  // 设置代理  self.locMgr.delegate = self;  }  return _locMgr;  }  - (void)viewDidLoad  {  [super viewDidLoad];  // 开始定位用户的位置  [self.locMgr startUpdatingLocation];  }  #pragma mark - CLLocationManagerDelegate  /** *  只要定位到用户的位置,就会调用(调用频率特别高) *  @param locations : 装着CLLocation对象 */  - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations  {  //CLLocation中存放的是一些经纬度, 速度等信息. 要获取地理位置需要转换做地理位置编码.  // 1.取出位置对象  CLLocation *loc = [locations firstObject];  NSLog(@"CLLocation----%@",loc);  // 2.取出经纬度  CLLocationCoordinate2D coordinate = loc.coordinate;  // 3.打印经纬度  NSLog(@"didUpdateLocations------%f %f", coordinate.latitude, coordinate.longitude);  // 停止定位(省电措施:只要不想用定位服务,就马上停止定位服务)  [manager stopUpdatingLocation];  }  @end  

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

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

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

#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>  @interface MyViewController () <MKMapViewDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *mapView;
@end  @implementation MyViewController  - (void)viewDidLoad
{  [super viewDidLoad];  // 1.跟踪用户位置(显示用户的具体位置)  self.mapView.userTrackingMode = MKUserTrackingModeFollow;  // 2.设置地图类型  self.mapView.mapType = MKMapTypeStandard;  // 3.设置代理  self.mapView.delegate = self;
}  #pragma mark - MKMapViewDelegate
/** *  当用户的位置更新,就会调用 * *  @param userLocation 表示地图上蓝色那颗大头针的数据 */
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{  userLocation.title = @"苍老师在这里";  userLocation.subtitle = @"苍老师在这里,你知道吗?";  CLLocationCoordinate2D center = userLocation.location.coordinate;  NSLog(@"%f %f", center.latitude, center.longitude);  // 设置地图的显示范围, 让其显示到当前指定的位置  MKCoordinateSpan span = MKCoordinateSpanMake(0.021321, 0.019366);//这个显示大小精度自己调整  MKCoordinateRegion region = MKCoordinateRegionMake(center, span);  [mapView setRegion:region animated:YES];
}
@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给的代码都切开的。

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {  // 添加对BMKMapManager的初始化,并填入您申请的授权Key  BMKMapManager *mapManager = [[BMKMapManager alloc]init];  // 如果要关注网络及授权验证事件,请设定generalDelegate参数  BOOL ret = [mapManager start:@"你的授权key,自己改" generalDelegate:nil];  if (!ret) {  NSLog(@"地图管理器初始化失败!");  }  return YES;  }  

viewController中使用也很简单

    #import "BMKMapManager.h"  #import "BMKMapView.h"  @interface XNViewController ()  {  BMKMapView *_mapView;  }  @end  @implementation XNViewController  - (void)viewDidLoad {  [super viewDidLoad];  _mapView = [[BMKMapView alloc] initWithFrame:CGRectMake(55, 100, 200, 200)];  [self.view addSubview:_mapView];  }

2、使用百度地图定位

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

Tips:

用到了BMKLocationService

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

这里就不写了。

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

iOS之苹果和百度地图的使用相关推荐

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

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

  2. ios 点生成线路 百度地图_iOS百度地图的使用

    项目最近对地图整体模块进行了重构, 为了和我们的安卓同学保持统一,放弃了原本就很6的高德地图,全部改用百度地图(虽然我觉得百度地图不好用,文档也一般,但是没办法啊,没办法啊 啊啊啊啊啊..). 项目中 ...

  3. 【iOS】苹果,百度Map定位使用与总结

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

  4. ios 点生成线路 百度地图_iOS SDK | 百度地图API SDK

    注意事项 1.静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即在Xcode的Pro ...

  5. ios项目中调用百度地图iphone版与百度地图HDipad版的坑

    最近在写项目的时候发现了项目中调用百度地图的一个坑,iphone版与ipad版的不同. 一.首先百度地图在ipad上叫百度地图HD,要区分有GPS和没GPS版,也就是说没GPS的没有导航功能,在使用项 ...

  6. ios 点生成线路 百度地图_百度地图iOS SDK

    iOS SDK v2.3.0 百度地图 iOS SDK是一套基于iOS4.3及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索.路径规划.地图标注.离线地图.定位等丰富的LBS ...

  7. ios 点生成线路 百度地图_百度地图下载-百度地图ios版15.3.0苹果版-东坡下载

    百度地图ios版是一款非常好用的手机地图导航软件,独自出行又不熟悉路程?下载百度地图ios版一键搜索所达目的地,自动为您推荐最快方案.时间最短方案.转车最少方案和红绿灯最少方案.软件实用方便,是出行的 ...

  8. ios 点生成线路 百度地图_iOS开发-集成百度地图(OC语言)

    一.申请安全码 图1-1 申请安全码 二.导入SDK,添加依赖库 1.根据项目需求(定位?路径规划?)下载所需要的SDK包,传送门:下载百度地图SDK,并拖进项目中. 图2-1 导入SDK 2.添加依 ...

  9. ios 点生成线路 百度地图_网站地图全面解析

    网站地图相信大家都不陌生,但对于一些刚刚接触seo的小伙伴来说可能会有些疑惑.这段时间我也时常听到有学员说网站地图怎么去制作分析,搞得也是非常的头痛,现在就来带大家全面透析网站地图吧. 一.什么是网站 ...

最新文章

  1. 成功部署SD-WAN策略应注意的几个事项—Vecloud微云
  2. Swift2.0 中的String(一):常用属性
  3. jvm性能调优 - 08什么情况下对象会被GC
  4. tensorflow lstm 预测_解析seq2seq原理+tensorflow实现
  5. 图数据库之Pregel
  6. 020-Spring Boot 监控和度量
  7. openOCD安装 极简教程
  8. 听说你还不会归并排序?
  9. 1.1zookeeper简介
  10. python约瑟夫环算法和流程图_约瑟夫环问题及python与c++实现效率对比
  11. springday04-go1
  12. atitit.错误:找不到或无法加载主类 的解决 v4 qa15.doc
  13. wps2019计算机里的云盘,WPS2019云文档如何使用?
  14. A股管家股票自动交易软件系统,功能完善强大
  15. 经济应用文写作【8】
  16. 微信小程序 地图map的坑
  17. CSR8615 蓝牙4.0音响模块
  18. 清除恶意主页www.7939.com
  19. Mysql中使用关键字name做字段名
  20. Java基础习题(四)

热门文章

  1. word中利用题注实现公式图表自动编号及引用
  2. 阿里云安全管家使用教程
  3. 物理五大信道浅聊PRACH、PUCCH、PUSCH、PDCCH、PDSCH
  4. 5G/NR 随机接入过程之PRACH时域资源
  5. 生动化你的表达——DuerOS中的SSML应用
  6. Golang 等比例调整图片分辨率且用黑色补齐多余部分
  7. java JVM 内存结构
  8. 感光器尺寸 面积 转换 计算
  9. pandas实现列转行
  10. 2022年Web时代猜想