iOS初級開發學習筆記:高德地圖顯示地圖並定位

快速完成導入、建立、顯示地圖並實現定位ios

導入高德地圖API

正好在前段時間學習了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";
 }
複製代碼
  • 咱們還需在info.plist中添加定位權限:

  • 還需進行工程配置:

左側目錄中選中工程名,開啓 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];
        
        }
}
複製代碼

此時運行就能夠看到地圖上定位點就是你當前的位置啦。

相關文章
相關標籤/搜索