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

网站:(网站里比较详细了,具体还没有试验过是否好用)

http://bbs.mobiletrain.org/thread-40396-1-1.html

一、苹果地图的使用

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

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

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

Tips:

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

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

定位代码如下:

#import#import@interface MyViewController ()@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

@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/w ... 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】苹果,百度Map定位使用与总结)