快速完成導入、建立、顯示地圖並實現定位ios
正好在前段時間學習了CocoaPods,咱們直接在Podfile文件中pod咱們須要的API:api
考慮到使用IDFA上線的時候要作出說明而且處理一下,提升了被拒風險,咱們選擇使用不集成 IDFA 版本的 SDK:bash
platform :ios, '8.0'
inhibit_all_warnings!
target 'PrivateTutor' do
pod 'AMap3DMap-NO-IDFA'
pod 'AMapLocation-NO-IDFA'
pod 'AMapSearch-NO-IDFA' #高德地圖SDK 無廣告版本
end
複製代碼
注意點:導航和2D不能同時導入,由於導航SDK包含了3DMap,3DMap和2DMap不能同時導入的,不然會出錯。官方說明如圖:app
cd進項目文件夾安裝 pod install
成功後進入下一步。ide
pod repo update
在.h文件中:學習
#import <UIKit/UIKit.h>
#import <MAMapKit/MAMapKit.h>
#import <AMapLocationKit/AMapLocationKit.h>
#import <AMapFoundationKit/AMapFoundationKit.h>
複製代碼
.m文件中聲明並懶加載建立視圖:ui
@property (nonatomic, strong) MAMapView *mapView;
-(MAMapView *)mapView{
if(!_mapView){
// 設置範圍
CGRect frame = self.view.frame;
frame.origin.y = 45;
frame.size.height = (self.view.frame.size.height - 45) * 0.55 + 45;
_mapView = [[MAMapView alloc] initWithFrame:frame];
_mapView.delegate = self;
// 是否顯示用戶位置
_mapView.showsUserLocation = YES;
// 設置導航模式爲跟隨
_mapView.userTrackingMode = MAUserTrackingModeFollow;
// 設置縮放級別
_mapView.zoomLevel = 18;
}
return _mapView;
}
複製代碼
將其加到父視圖上,此時運行便可成功看到mapView。而定位仍不是當前所在的定位。atom
首先咱們要獲取key,相關說明及步驟官方文檔均有介紹:獲取keyspa
獲取到key後,在appDelegate.m中:code
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
/* 配置高德地圖 key */
[AMapServices sharedServices].apiKey = @"獲取到的key";
}
複製代碼
左側目錄中選中工程名,開啓 TARGETS->Capabilities->Background Modes。在 Background Modes中勾選 Location updates
開啓定位方法:
- (void)startLocation
{
if([CLLocationManager locationServicesEnabled]){
AMapLocationManager *locationManager = [[AMapLocationManager alloc]init];
_locationManager.delegate = self;
// 設定定位的最小更新距離。單位米,默認爲 kCLDistanceFilterNone,表示只要檢測到設備位置發生變化就會更新位置信息
_locationManager.distanceFilter = 5;
// 設按期望的定位精度。單位米,默認爲 kCLLocationAccuracyBest
_locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
//是否容許後臺定位。默認爲NO。只在iOS 9.0及以後起做用。
[locationManager setAllowsBackgroundLocationUpdates:NO];
// 開始定位服務
[locationManager startUpdatingLocation];
}
}
複製代碼
此時運行就能夠看到地圖上定位點就是你當前的位置啦。