具體的集成方法 直接官方文檔就行了 這裏只作 使用說明: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 我將懷着謙卑的心 努力學習 感激涕零)