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];
        
        }
}
复制代码

此时运行就能够看到地图上定位点就是你当前的位置啦。

相关文章
相关标签/搜索