創(chuàng)建地圖
- 創(chuàng)建開發(fā)者賬號
- 創(chuàng)建應用 申請秘鑰
- 在工程中將ViewController.mm 因為SDK有一部分是以C++寫的
靜態(tài)庫中采用ObjectC++實現,因此需要您保證您工程中至少有一個.mm后綴的源文件(您可以將任意一個.m后綴的文件改名為.mm),或者在工程屬性中指定編譯方式,即將Xcode的Project -> Edit Active Target -> Build -> GCC4.2 - Language -> Compile Sources As設置為"Objective-C++"
- 修改plis文件
在plist文件中添加- NSLocationAlwaysUsageDescription
- NSLocationWhenInUseUsageDescription
- BaiduNew
- 配置環(huán)境
導入百度提供的.framework包
引入所需的系統庫
百度地圖SDK中提供了定位功能和動畫效果烦却,v2.0.0版本開始使用OpenGL渲染疆偿,因此您需要在您的Xcode工程中引入CoreLocation.framework和QuartzCore.framework、OpenGLES.framework胚嘲、SystemConfiguration.framework、CoreGraphics.framework洛二、Security.framework馋劈、libsqlite3.0.tbd(xcode7以前為 libsqlite3.0.dylib)、CoreTelephony.framework 晾嘶、libstdc++.6.0.9.tbd(xcode7以前為libstdc++.6.0.9.dylib)侣滩。
(注:加粗標識的系統庫為v2.9.0新增的系統庫,使用v2.9.0及以上版本的地圖SDK变擒,務必增加導入這3個系統庫君珠。)
在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC。
** 注意大小寫**
- 引入mapapi.bundle資源文件
方法:選中工程名娇斑,在右鍵菜單中選擇Add Files to “工程名”…策添,從BaiduMapAPI_Map.framework||Resources文件中選擇mapapi.bundle文件,并勾選“Copy items if needed”復選框毫缆,單擊“Add”按鈕唯竹,將資源文件添加到工程中。
- 添加頭文件
import <BaiduMapAPI_Base/BMKBaseComponent.h>//引入base相關所有的頭文件
import <BaiduMapAPI_Map/BMKMapComponent.h>//引入地圖功能所有的頭文件
添加屬性
@property (nonatomic, strong)BMKMapManager *manager;
簽協議
<BMKGeneralDelegate>
初始化
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 要使用百度地圖苦丁,請先啟動BaiduMapManager
_mapManager = [[BMKMapManager alloc]init];
// 如果要關注網絡及授權驗證事件浸颓,請設定 generalDelegate參數
BOOL ret = [_mapManager start:@"在此處輸入您的授權Key" generalDelegate:nil];
if (!ret) {
NSLog(@"manager start failed!");
}
// Add the navigation controller's view to the window and display.
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
return YES;
}
實現協議方法
/**
* 獲取網絡狀態(tài)
*/
-(void)onGetNetworkState:(int)iError {
if (iError == 0) {
NSLog(@"聯網成功");
} else {
NSLog(@"聯網失敗");
}
}
/**
* 獲取授權狀態(tài)
*/
-(void)onGetPermissionState:(int)iError {
if (iError == 0) {
NSLog(@"獲取授權成功");
} else {
NSLog(@"獲取授權失敗");
}
}
- 進入后臺 進入前臺
- (void)applicationWillResignActive:(UIApplication *)application {
[BMKMapView willBackGround];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
[BMKMapView didForeGround];
}
-
在storyBoard 添加NavigationController
添加一個View
使其繼承于BMKMaoView
這時候運行一下
添加功能
- 在之前的view上添加Button 讓其顯示在View上
- 引入頭文件 拖拽view添加屬性
#import "ViewController.h"
#import <BaiduMapAPI_Base/BMKBaseComponent.h>//引入base相關所有的頭文件
#import <BaiduMapAPI_Map/BMKMapComponent.h>//引入地圖功能所有的頭文件
@interface ViewController ()
@property (weak, nonatomic) IBOutlet BMKMapView *mapView;
@end
- 簽代理 <BMKMapViewDelegate>
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.mapView.delegate = self;
}
-(void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
self.mapView.delegate = nil;
}
view 上再添加一個View 黑色 Alpha0.6
-
拖拽Button和灰色View添加屬性
button 添加點擊事件
- (IBAction)showSView:(id)sender {
NSLog(@"SDFSDFAS");
if (self.sView.alpha == 0) {
[UIView animateWithDuration:0.2 animations:^{
self.sView.alpha = 0.6;
}];
} else {
[UIView animateWithDuration:0.2 animations:^{
self.sView.alpha = 0;
}];
}
}
- 添加label 和 switch
- 衛(wèi)星地圖switch點擊事件
- (IBAction)switchMapType:(id)sender {
UISwitch *mySwitch = (UISwitch *)sender;
[self.mapView setMapType:mySwitch.on == YES ? BMKMapTypeSatellite : BMKMapTypeStandard];
}
-
添加實時路況同上:
實時了路況點擊事件:
- (IBAction)switchMapLoade:(id)sender {
UISwitch *mySwitch = (UISwitch *)sender;
self.mapView.trafficEnabled = mySwitch.on;
}
-
添加熱力圖
- (IBAction)showHeat:(id)sender {
UISwitch *mySwitch = (UISwitch *)sender;
self.mapView.baiduHeatMapEnabled = mySwitch.on;
}
-
添加四個Button 分別拖拽為屬性 如圖
在viewDidLoad里隱藏上面三個Button
self.followButton.alpha = 0;
self.headButton.alpha = 0;
self.endButton.alpha = 0;
- 給開始定位按鈕添加點擊事件 使上面三個Button出現開始定位按鈕隱藏
- (IBAction)startLocation:(id)sender {
[UIView animateWithDuration:0.3 animations:^{
self.startButton.alpha = 0;
self.followButton.alpha = 1;
self.headButton.alpha = 1;
self.endButton.alpha = 1;
self.sView.alpha = 0;
}];
}
- 引入定位功能的頭文件
#import <BaiduMapAPI_Location/BMKLocationComponent.h>//引入定位功能所有的頭文件
- 添加屬性
@property (nonatomic, strong) BMKLocationService *locationService;
*簽代理
BMKLocationServiceDelegate
*初始化
self.locationService = [[BMKLocationService alloc] init];
- 簽代理
self.locationService.delegate =self;
- 在開始定位時啟動本地定位 開始定位的點擊事件里添加
[self.locationService startUserLocationService]; [self.mapView showsUserLocation];
- 在關閉定位的點擊事件中關閉定位
[self.locationService stopUserLocationService]; self.mapView.showsUserLocation = NO;
- 添加代理方法
/**
* 地圖更新
*/
-(void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation {
[self.mapView updateLocationData:userLocation];
}
未完待續(xù).......