iOS之苹果和百度地图的使用

原创 2016年05月31日 23:18:47

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 高德地图 百度地图 以及苹果自带的地图URI的使用 以及CLLocationManager的使用

1.首先Xcode导入一个自己带的官方头文件#import 在创建:    self.locationManager = [[CLLocationManager alloc] init]; ...

iOS 百度地图的使用

  • 2015年04月11日 10:34
  • 9.58MB
  • 下载

iOS 跳转到地图后导航(高德地图,百度地图,腾讯地图,苹果手机原生的地图)

1.现在info.plist里面如下图所示添加

iOS开发——项目中的地图跳转(苹果地图,百度地图,高德地图)

最近项目中遇到一个小需求,就是点击地图上的大头针进行导航,如果手机中装了多种地图软件,就用提示框显示出来,如果没有装地图软件,就默认跳转到苹果自带的地图进行导航,代码如下://导航按钮 - (void...

百度地图苹果手机

  • 2014年05月26日 15:16
  • 17MB
  • 下载

ios 百度地图 使用详解

本文转自        blog.csdn.net/ysy441088327/article/details/8174276 在根据官方文档:          developer.baidu....

iOS百度地图SDK2.4.1版本的使用(一)

由于客户需求和我们的代码方便,把软件里的全部地图都使用百度地图;   随着百度SDK的升级,无论是地图的精确性还是信息的详细度几乎都能达到我们需求;  准备工作:需要申请密匙;百度地图iO...

iOS百度地图的基本使用

最近工司项目中要用到百度地图,之前都没接触过百度地图,都不知道从何下手,所以不得不给自己定一个星期的时间来研究下百度地图官方iOS Demo。在这里也小小的总结了一些百度地图的常用方法,好了废话不多说...

iOS百度地图的基本使用

1.如何点击按钮放大和缩小地图? 在地图上创建两个按钮加上点击事件,点击事件中分别写上如下方法即可实现: 创建按钮: //左边按钮 UIButton *leftBtn = [UIButton but...

iOS百度地图SDK基本配置和使用

介绍:在iOS的开发中,有些应用需要实现与地图相关功能,这时候可以选择使用苹果自带的框架进行实现,也可以选择使用百度所提供的这个第三方SDK进行功能的实现,下面将对百度地图的SDK的基本使用进行说明:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS之苹果和百度地图的使用
举报原因:
原因补充:

(最多只允许输入30个字)