快速完成導入、創(chuàng)建吗氏、顯示地圖并實現定位
導入高德地圖API
正好在前段時間學習了CocoaPods,我們直接在Podfile文件中pod我們需要的API:
考慮到使用IDFA上線的時候要做出說明并且處理一下雷逆,提高了被拒風險弦讽,我們選擇使用不集成 IDFA 版本的 SDK:
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不能同時導入的往产,否則會出錯。官方說明如圖:
cd進項目文件夾安裝 pod install
成功后進入下一步某宪。
- 需要更新時仿村,使用命令
pod repo update
創(chuàng)建地圖視圖
在.h文件中:
#import <UIKit/UIKit.h>
#import <MAMapKit/MAMapKit.h>
#import <AMapLocationKit/AMapLocationKit.h>
#import <AMapFoundationKit/AMapFoundationKit.h>
.m文件中聲明并懶加載創(chuàng)建視圖:
@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兴喂。而定位仍不是當前所在的定位蔼囊。
實現定位
首先我們要獲取key,相關說明及步驟官方文檔均有介紹:獲取key
獲取到key后衣迷,在appDelegate.m中:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
/* 配置高德地圖 key */
[AMapServices sharedServices].apiKey = @"獲取到的key";
}
- 我們還需在info.plist中添加定位權限:
image
- 還需進行工程配置:
左側目錄中選中工程名畏鼓,開啟 TARGETS->Capabilities->Background Modes。在 Background Modes中勾選 Location updates
開啟定位方法:
- (void)startLocation
{
if([CLLocationManager locationServicesEnabled]){
AMapLocationManager *locationManager = [[AMapLocationManager alloc]init];
_locationManager.delegate = self;
// 設定定位的最小更新距離壶谒。單位米云矫,默認為 kCLDistanceFilterNone,表示只要檢測到設備位置發(fā)生變化就會更新位置信息
_locationManager.distanceFilter = 5;
// 設定期望的定位精度汗菜。單位米让禀,默認為 kCLLocationAccuracyBest
_locationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
//是否允許后臺定位。默認為NO陨界。只在iOS 9.0及之后起作用巡揍。
[locationManager setAllowsBackgroundLocationUpdates:NO];
// 開始定位服務
[locationManager startUpdatingLocation];
}
}
此時運行就可以看到地圖上定位點就是你當前的位置啦。