Xcode 7.0之後 iOS 9.0之後 最新百度地圖 詳細使用

具體的集成方法 直接官方文檔就行了 這裏只作 使用說明:git

 

若是集成沒有問題 那麼跟着個人如下步驟作 絕對沒有問題:(在這裏說明一下 我把 定位和地圖 分塊寫出來的這樣比較清晰)api

 

 

1.appDelegate   倒入頭文件  定義百度管理者屬性屬性網絡

@property (strong, nonatomic) BMKMapManager *mapManager;app

 並在啓動方法中實現方法ide

#import <BaiduMapAPI_Map/BMKMapView.h>//只引入所需的單個頭文件工具

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {學習

  #pragma mark - 百度地圖動畫

    // 要使用百度地圖,請先啓動BaiduMapManageratom

    _mapManager = [[BMKMapManager alloc]init];spa

    // 若是要關注網絡及受權驗證事件,請設定     generalDelegate參數

    BOOL ret = [_mapManager start:@"SjoQXduG5ibrPCHn4PfZy87p"  generalDelegate:nil]; // 藍色部分替換你本身的key

    if (!ret) {

        NSLog(@"百度地圖管理者 啓動失敗");

    }

}

 

2.在要使用地圖的類中  倒入頭文件 進行使用百度地圖的功能

#import <BaiduMapAPI_Base/BMKBaseComponent.h>//引入base相關全部的頭文件

#import <BaiduMapAPI_Map/BMKMapComponent.h>//引入地圖功能全部的頭文件

#import <BaiduMapAPI_Location/BMKLocationComponent.h>//引入定位功能全部的頭文件

#import <BaiduMapAPI_Utils/BMKUtilsComponent.h>//引入計算工具全部的頭文件

#import <BaiduMapAPI_Map/BMKMapView.h>//只引入所需的單個頭文件

 

3.調用方法是用 直接貼代碼註釋很詳細

@interface MapLawDetailViewController () <BMKMapViewDelegate, BMKLocationServiceDelegate>

/**

 *  百度地圖

 */

@property (strong, nonatomic) BMKMapView *mapView;

 

/**

 *  定爲服務

 */

@property (strong, nonatomic) BMKLocationService *locService;

@end

 

@implementation MapLawDetailViewController

- (void)viewDidLoad {

    [super viewDidLoad];

    

    // 啓動定位

    [self locService];

    

    // 顯示地圖

    [self.view addSubview:self.mapView];

}

 

#pragma mark - 定位功能------------------------------------

- (BMKLocationService *)locService {

    if (_locService == nil) {

        _locService = [[BMKLocationService alloc]init];

        _locService.delegate = self;

        _locService.distanceFilter = 100.f;

        // 後臺也定位 而且屏幕上方有藍條提示

        _locService.allowsBackgroundLocationUpdates = YES;

        //啓動LocationService

        [_locService startUserLocationService];

    }

    return _locService;

}

 

//實現相關delegate 處理位置信息更新

//處理位置座標更新

- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation

{

    // 1.顯示用戶位置

    self.mapView.showsUserLocation = YES;

    // 2.更新用戶最新位置到地圖上

    [self.mapView updateLocationData:userLocation];

    

    // 3.設置中心 爲 用戶位置

    CLLocationCoordinate2D center = userLocation.location.coordinate;

    CLLocationDegrees latitude = 0.5;

    CLLocationDegrees longitude = 0.5;

    

    // 4.設置跨度 數值越小 越精確

    BMKCoordinateSpan span = BMKCoordinateSpanMake(latitude, longitude);

    // 5.設置區域 中心店 和 範圍跨度

    BMKCoordinateRegion region = BMKCoordinateRegionMake(center, span);

    

    // 設置地圖顯示區域範圍

    [self.mapView setRegion:region animated:YES];

}

 

 

 

#pragma mark - 地圖功能-------------------------------------------

- (BMKMapView *)mapView {

    if (_mapView == nil) {

        _mapView = [[BMKMapView alloc]initWithFrame:self.view.bounds];

    }

    return _mapView;

}

 

- (void)viewWillAppear:(BOOL)animated

{

    [self.mapView viewWillAppear];

    self.mapView.delegate = self; // 此處記得不用的時候須要置nil,不然影響內存的釋放

}

- (void)viewWillDisappear:(BOOL)animated

{

    [self.mapView viewWillDisappear];

    self.mapView.delegate = nil; // 不用時,置nil

}

 

- (void)viewDidAppear:(BOOL)animated {

    // 添加一個PointAnnotation模型

    BMKPointAnnotation* annotation = [[BMKPointAnnotation alloc]init];

    CLLocationCoordinate2D coor; // 定義模型經緯度

    coor.latitude = 39.915;

    coor.longitude = 116.404;

    annotation.coordinate = coor;

    annotation.title = @"這裏是北京";

    

    [_mapView addAnnotation:annotation];

}

 

//  Override每當添加一個大頭針就會調用這個方法(對大頭針沒有進行封裝)

- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id <BMKAnnotation>)annotation {

    

    // 這裏的BMKAnnotationView 就至關因而UITableViewCell同樣 其實就是一個View咱們也是經過複用的樣子同樣進行使用。 而傳進來的annotation 就是一個模型,它裏面裝的全都是數據!

    if ([annotation isKindOfClass:[BMKPointAnnotation class]]) {

        // 若是大頭針類型 是咱們自定義的百度的 並且是後加的大頭針模型類 的話 才執行

        static NSString *const ID = @"myAnnotation";

        

        BMKPinAnnotationView *newAnnotationView = (BMKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:ID];

        

        if (newAnnotationView == nil) {

            newAnnotationView =  [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:ID];

        }

        

        newAnnotationView.pinColor = BMKPinAnnotationColorPurple;

        newAnnotationView.animatesDrop = YES; // 設置該標註點動畫顯示

        newAnnotationView.image = [UIImage imageNamed:@"marker"];

        return newAnnotationView;

    }

    // 這裏是說定位本身自己的那個大頭針模型 返回nil 自動就變成藍色點點

    return nil;

}

 

 

 

總結:百度地圖是用很方便,相對於以前的版本,廢棄了一些api 這樣更簡單易用。

(若是有寫的不對的地方歡迎與我交流 QQ:234009184 我將懷着謙卑的心 努力學習 感激涕零)

相關文章
相關標籤/搜索