iOS之苹果和百度地图的使用
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之苹果和百度地图的使用相关推荐
- ios 苹果和百度地图的相关使用
iOS中使用较多的3款地图,google地图.百度地图.苹果自带地图(高德).其中苹果自带地图在中国使用的是高德的数据.苹果在iOS 6之后放弃了使用谷歌地图,而改用自家的地图.在国内使用的较多的就是 ...
- ios 点生成线路 百度地图_iOS百度地图的使用
项目最近对地图整体模块进行了重构, 为了和我们的安卓同学保持统一,放弃了原本就很6的高德地图,全部改用百度地图(虽然我觉得百度地图不好用,文档也一般,但是没办法啊,没办法啊 啊啊啊啊啊..). 项目中 ...
- 【iOS】苹果,百度Map定位使用与总结
iOS中使用较多的3款地图,google地图.百度地图.苹果自带地图(高德).其中苹果自带地图在中国使用的是高德的数据.苹果在iOS 6之后放弃了使用谷歌地图,而改用自家的地图.在国内使用的较多的就是 ...
- ios 点生成线路 百度地图_iOS SDK | 百度地图API SDK
注意事项 1.静态库中采用ObjectC++实现,因此需要您保证您工程中至少有一个.mm后缀的源文件(您可以将任意一个.m后缀的文件改名为.mm),或者在工程属性中指定编译方式,即在Xcode的Pro ...
- ios项目中调用百度地图iphone版与百度地图HDipad版的坑
最近在写项目的时候发现了项目中调用百度地图的一个坑,iphone版与ipad版的不同. 一.首先百度地图在ipad上叫百度地图HD,要区分有GPS和没GPS版,也就是说没GPS的没有导航功能,在使用项 ...
- ios 点生成线路 百度地图_百度地图iOS SDK
iOS SDK v2.3.0 百度地图 iOS SDK是一套基于iOS4.3及以上版本设备的应用程序接口,不仅提供展示地图的基本接口,还提供POI检索.路径规划.地图标注.离线地图.定位等丰富的LBS ...
- ios 点生成线路 百度地图_百度地图下载-百度地图ios版15.3.0苹果版-东坡下载
百度地图ios版是一款非常好用的手机地图导航软件,独自出行又不熟悉路程?下载百度地图ios版一键搜索所达目的地,自动为您推荐最快方案.时间最短方案.转车最少方案和红绿灯最少方案.软件实用方便,是出行的 ...
- ios 点生成线路 百度地图_iOS开发-集成百度地图(OC语言)
一.申请安全码 图1-1 申请安全码 二.导入SDK,添加依赖库 1.根据项目需求(定位?路径规划?)下载所需要的SDK包,传送门:下载百度地图SDK,并拖进项目中. 图2-1 导入SDK 2.添加依 ...
- ios 点生成线路 百度地图_网站地图全面解析
网站地图相信大家都不陌生,但对于一些刚刚接触seo的小伙伴来说可能会有些疑惑.这段时间我也时常听到有学员说网站地图怎么去制作分析,搞得也是非常的头痛,现在就来带大家全面透析网站地图吧. 一.什么是网站 ...
最新文章
- 成功部署SD-WAN策略应注意的几个事项—Vecloud微云
- Swift2.0 中的String(一):常用属性
- jvm性能调优 - 08什么情况下对象会被GC
- tensorflow lstm 预测_解析seq2seq原理+tensorflow实现
- 图数据库之Pregel
- 020-Spring Boot 监控和度量
- openOCD安装 极简教程
- 听说你还不会归并排序?
- 1.1zookeeper简介
- python约瑟夫环算法和流程图_约瑟夫环问题及python与c++实现效率对比
- springday04-go1
- atitit.错误:找不到或无法加载主类 的解决 v4 qa15.doc
- wps2019计算机里的云盘,WPS2019云文档如何使用?
- A股管家股票自动交易软件系统,功能完善强大
- 经济应用文写作【8】
- 微信小程序 地图map的坑
- CSR8615 蓝牙4.0音响模块
- 清除恶意主页www.7939.com
- Mysql中使用关键字name做字段名
- Java基础习题(四)