zoukankan      html  css  js  c++  java
  • ios开发--高德地图SDK使用简介

    高德LBS开放平台将高德最专业的定位、地图、搜索、导航等能力,以API、SDK等形式向广大开发者免费开放。本章节我们来简单学习一下如何使用它的定位及地图SDK。

    一、相关框架及环境配置

    • 地图SDK

    对于如何下载SDK,它的官方文档提供了很详细的说明,使用CocoaPods。如果你没有安装CocoaPods,也可以在它的官网直接下载。

    QQ20160330-0QQ20160330-1

    接下来只需要将SDK引入工程,完成相关的环境配置即可。在它的官方文档中有详细说明,这里就不重复了。

    QQ20160330-2

    地图SDK文档

    • 定位SDK

    高德 iOS 定位 SDK 提供了不依赖于地图定位的定位功能,开发者可以无地图显示的场景中便捷地为应用程序添加定位功能。它的定位 SDK中提供的持续定位功能与地图功能分离。同样我们先下载SDK。

    QQ20160330-3

    QQ20160330-4

    由于定位与地图是不同的SDK所以一定要记得设置两次用户Key。

    另外需要特别注意的是,在官方文档中对于 TARGETS-Build Settings-Architectures的环境配置,在定位和地图SDK是不同的,但是大家只要设置其中一个就可以了。

    定位SDK文档

    二、示例代码

    IMG_1059

    • 引入相关框架,并完成环境配置

    QQ20160330-5

    在它的官方文档中对于需要什么样的框架有详细的说明,大家根据文档添加。

    最后根据文档我们需要设置info.plist文件。

    QQ20160330-7

    • 在AppDelegate.m文件中完成apiKey的设置
    1. #import <MAMapKit/MAMapKit.h>//地图SDK头文件
    2. #import <AMapLocationKit/AMapLocationKit.h>//定位SDK头文件
    1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    2. [MAMapServices sharedServices].apiKey = @"990c9f469d381bd72a6915b3d0c829a5";//地图SDK
    3. [AMapLocationServices sharedServices].apiKey =@"990c9f469d381bd72a6915b3d0c829a5";//定位SDK
    4. return YES;
    5. }
    • 在viewController.m文件中引入所需属性,并完成懒加载
    1. #import <MAMapKit/MAMapKit.h>
    2. #import <AMapLocationKit/AMapLocationKit.h>
    1. @interface ViewController ()<MAMapViewDelegate,AMapLocationManagerDelegate>
    2. @property (nonatomic, strong) MAMapView *mapView;//地图视图
    3. @property (nonatomic, strong) AMapLocationManager *locationManager;//定位管理者
    4. @end
    1. - (MAMapView *)mapView{
    2. if (!_mapView) {
    3. _mapView = [[MAMapView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.bounds), CGRectGetHeight(self.view.bounds))];
    4. _mapView.delegate = self;
    5. _mapView.mapType = MAMapTypeStandard;//设置地图类型
    6. _mapView.showTraffic= YES;//是否显示交通图
    7. [self.locationManager startUpdatingLocation];//开始定位
    8. [_mapView setUserTrackingMode: MAUserTrackingModeFollow animated:YES];//定位以后改变地图的图层显示。
    9. [self.view addSubview:_mapView];
    10. }
    11. return _mapView;
    12. }
    13. - (AMapLocationManager *)locationManager{
    14. if (!_locationManager) {
    15. _locationManager = [[AMapLocationManager alloc] init];
    16. _locationManager.delegate = self;
    17. }
    18. return _locationManager;
    19. }
    20. - (void)viewDidLoad {
    21. [super viewDidLoad];
    22. [self locationManager];
    23. [self mapView];
    24. }
    • 完成定位和“大头针”功能
    1. //AMapLocationManager代理方法位置更新以后回调。
    2. - (void)amapLocationManager:(AMapLocationManager *)manager didUpdateLocation:(CLLocation *)location
    3. {
    4. NSLog(@"location:{lat:%f; lon:%f; accuracy:%f}", location.coordinate.latitude, location.coordinate.longitude, location.horizontalAccuracy);
    5. }
    6. -(void) viewDidAppear:(BOOL)animated
    7. {
    8. [super viewDidAppear:animated];
    9. MAPointAnnotation *pointAnnotation = [[MAPointAnnotation alloc] init];
    10. pointAnnotation.coordinate = CLLocationCoordinate2DMake(31.982527, 118.735046);
    11. pointAnnotation.title = @"宏创科技";
    12. pointAnnotation.subtitle = @"国家广告产业园XXX";
    13. [self.mapView addAnnotation:pointAnnotation];
    14. }
    15. //MAMapView代理方法,用来设置大头针
    16. - (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id )annotation
    17. {
    18. if ([annotation isKindOfClass:[MAPointAnnotation class]])
    19. {
    20. static NSString *pointReuseIndentifier = @"pointReuseIndentifier";
    21. MAPinAnnotationView*annotationView = (MAPinAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:pointReuseIndentifier];
    22. if (annotationView == nil)
    23. {
    24. annotationView = [[MAPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:pointReuseIndentifier];
    25. }
    26. annotationView.canShowCallout= YES; //设置气泡可以弹出,默认为NO
    27. annotationView.animatesDrop = YES; //设置标注动画显示,默认为NO
    28. annotationView.draggable = YES; //设置标注可以拖动,默认为NO
    29. annotationView.pinColor = MAPinAnnotationColorPurple;
    30. return annotationView;
    31. }
    32. return nil;
    33. }
  • 相关阅读:
    剑指Offer替换空格
    转载类的静态成员函数和静态成员变量的使用
    最长递增子序列长度LIS
    剑指Offer二维数组中的查找
    转载C语言:浮点数在内存中的表示
    7 CICD实战 持续集成71 kubernetes与cicd
    9 深入kubernetes服务调度与编排91 健康检查高可用的守护者
    项目成功的⑤大因素
    Ucos_II2.52源码中文译注
    SIP协议中的认证方式
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/5359083.html
Copyright © 2011-2022 走看看