高德地图开发汇总

简介: 高德地图主要分为地图开发、导航开发、定位开发、室内地图、室内定位。总结一下在项目中用到的地图开发。 Demo地址 DEMO比较简单,集成了3d地图和搜索sdk,可以根据自己的需求添加功能。

介绍

高德地图主要分为地图开发、导航开发、定位开发、室内地图、室内定位。总结一下在项目中用到的地图开发。
Demo地址 DEMO比较简单,集成了3d地图和搜索sdk,可以根据自己的需求添加功能。

一:基本地图功能实现

1.申请密钥流程

申请密钥链接

2.配置环境(重点)

高德地图提供了两种配置方式:

2.1手动配置

2.1.1 引入地图库

MAMapKit.framework 文件添加到工程中。

2.1.2 引入AMap.bundle资源文件

AMap.bundle资源文件中存储了定位、默认大头针标注视图等图片,可利用这些资源图片进行开发。
左侧目录中选中工程名,在右键菜单中选择Add Files to “工程名”…,从MAMapKit.framework->Resources文件中选择AMap.bundle文件,并勾选“Copy items if needed”复选框,单击“Add”按钮,将资源文件添加到工程中。
资源文件不是必须的,可以自定义资源图片。

2.1.3引入系统库

1.  UIKit.framework 2D、3D、Search
2.  Foundation.framework    2D、3D、Search
3.  CoreGraphics.framework  2D、3D、Search
4.  QuartzCore.framework    2D、3D
5.  OpenGLES.framework  3D
6.  CoreLocation.framework  2D、3D
7.  CoreTelephony.framework 2D、3D、Search
8.  SystemConfiguration.framework   2D、3D、Search
9.  libz.dylib  2D、3D、Search
10. libstdc++6.09.dylib 2D、3D、Search
11. Security.framework  2D、3D

2.1.4 环境配置

在TARGETS->Build Settings->Other Linker Flags 中添加-ObjC。
V2.3.0(含)之前版本不支持arm64,需在 TARGETS->Build Settings->Architectures 点出选择框,选择 “Other”,将默认值修改为 $(ARCHS_STANDARD_32_BIT)。

2.2自动配置,(使用 CocoaPods 安装 SDK)

为 高德 iOS 地图 SDK 创建一个 Podfile,并使用它来安装 SDK。

2.2.1 创建Podfile文件

在您当前工程文件(.xcodeproj)所在文件夹下创建一个名为 Podfile 的文件。如果您尚未创建 Xcode 项目,请立即创建一个并将其保存到您的本地计算机。 (如果您第一次接触 iOS 开发,请创建一个Single View Application。)

$ touch Podfile

2.2.2 编辑 Podfile 文件

Podfile文件内容如下:

platform :ios, '7.0' #手机的系统 target 'YourProjectTarget' do pod 'AMap3DMap' #3D地图SDK #pod 'AMap2DMap' #2D地图SDK (2D和3D不能同时使用) pod 'AMapSearch' #搜索功能 end

2.2.3 运行 pod install 命令安装SDK

$pod install --repo-update

1.1.0版本的pod,运行pod install 不会自动更新repo,如果下载的不是最新版,可使用pod install —repo-update 更新 或 先运行 pod repo update.

2.2.4 更新 SDK

如果您安装的SDK不是最新版,请执行下面的代码进行更新。

pod repo update

2.2.5 重启 Xcode

关闭Xcode,然后打开(双击)您项目的 .xcworkspace 文件以启动 Xcode。 从此刻开始,您必须使用 .xcworkspace 文件打开项目。

3.地图的使用

3.1配置Info.plist 文件

iOS9为了增强数据访问安全,将所有的http请求都改为了https,为了能够在iOS9中正常使用地图SDK,请在"Info.plist"中进行如下配置,否则影响SDK的使用。

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true></true>
</dict>

3.2配置高德Key至AppDelegate.m文件

#import <AMapFoundationKit/AMapFoundationKit.h>
//需要引入AMapFoundationKit.h头文件
……

 (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{  
    [AMapServices sharedServices].apiKey = @"您的Key";
     
    ……
}

3.3加载地图

在ViewController.m文件相应的方法中进行地图初始化,初始化的步骤:

  • 1.import MAMapKit.h 头文件;
  • 2.构造MAMapView对象;
  • 3.将MAMapView添加到Subview中。

对于3D矢量地图,在 viewDidLoad 方法中添加代码:

#import <MAMapKit/MAMapKit.h>

-(void) viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

///初始化地图
MAMapView *_mapView = [[MAMapView alloc] initWithFrame:self.view.bounds];
    
///把地图添加至view
    [self.view addSubview:_mapView];
}

到此地图的基本功能就完成了
Demo地址 如果有所帮助记得关注,点Star
demo中添加了查看路况功能,如果不需要,可以删除。

二:自定义地图功能

在上面功能的基础上我们可以针对需求,自定义地图功能,下面我就列举出常用功能设置方法:

1.地图Logo

默认的Logo为蓝色字样的“高德地图”,显示在地图的左下方。地图Logo不能移除,但可通过MAMapView.logoCenter属性来调整Logo的显示位置。在ViewController.m的viewDidLoad方法添加如下如下:

_mapView.logoCenter = CGPointMake(CGRectGetWidth(self.view.bounds)-55, 450);

2.指南针

指南针默认是开启状态,显示在地图的右上角。
通过MAMapView的showsCompass属性用来控制指南针的可见性。compassOrigin属性可改变指南针的显示位置。在ViewController.m的viewDidLoad方法添加如下如下:

_mapView.showsCompass= YES; // 设置成NO表示关闭指南针;YES表示显示指南针
_mapView.compassOrigin= CGPointMake(_mapView.compassOrigin.x, 22); //设置指南针位置

3.比例尺

比例尺表示地图上两点间距离与实际与之对应的两点距离的比,在不同的缩放级别下,比例尺代表的长度也是不同的。
在iOS SDK中,比例尺默认显示在地图的左上角。MAMapView的showScale属性用来控制比例尺的可见性,scaleOrigin属性用来改变比例尺的显示位置。在ViewController.m的viewDidLoad方法添加如下代码:

_mapView.showScale= YES;  //设置成NO表示不显示比例尺;YES表示显示比例尺
_mapView.scaleOrigin= CGPointMake(_mapView.scaleOrigin.x, 22);  //设置比例尺位置

4.手势控制

//缩放手势
_mapView.zoomEnabled = NO;    //NO表示禁用缩放手势,YES表示开启
//平移(滑动)手势
_mapView.scrollEnabled = NO;    //NO表示禁用滑动手势,YES表示开启
//旋转手势(3D)
_mapView.rotateEnabled= NO;    //NO表示禁用旋转手势,YES表示开启
//倾斜手势(3D)
_mapView.rotateCameraEnabled= NO;    //NO表示禁用倾斜手势,YES表示开启

5.地图操作

地图缩放
地图的缩放级别的范围是[3-19],调用MAMapView的setZoomLevel方法设置地图的缩放级别,用来缩放地图。示例代码如下:

[_mapView setZoomLevel:17.5 animated:YES];

地图平移

[_mapView setCenterCoordinate:center animated:YES];

地图旋转(3D)
旋转角度的范围是[0.f 360.f],以逆时针为正向。示例代码如下:

[_mapView setRotationDegree:60.f animated:YES duration:0.5];

地图倾斜(3D)
倾斜角度范围为[0.f, 45.f],示例代码如下:

[_mapView setCameraDegree:30.f animated:YES duration:0.5];

6.地图截屏

CGRect inRect = CGRectMake(80,142,160,284);
UIImage *screenshotImage = [_mapView takeSnapshotInRect:inRect] ;

7.卫星图

//显示卫星地图
_mapView.mapType = MAMapTypeSatellite;

说明:地图类型切换只需将地图类型设置成相应的类型

8. 实时交通图

显示实时交通路况的代码如下:

_mapView.showTraffic= YES;

9.定位功能

9.1 开启定位

_mapView.showsUserLocation = YES; //YES 为打开定位,NO为关闭定位
当位置更新时,会进定位回调,通过回调函数,能获取到定位点的经纬度坐标:

-(void)mapView:(MAMapView*)mapView didUpdateUserLocation: (MAUserLocation*)userLocation updatingLocation:(BOOL)updatingLocation

9.2 后台定位

app退到后台,且位置不变动时,也不会被系统挂起,可持久记录位置信息。

1.添加代码

_mapView.pausesLocationUpdatesAutomatically = NO;

2.工程配置

  • 左侧目录中选中工程名,开启 TARGETS->Capabilities->Background Modes
  • 在 Background Modes中勾选 Location updates

10.大头针标注

地图标注在开发中经常使用,并且地图标注样式灵活,需要着重注意。
在地图的基础,添加地图标注,需要两步

  1. 创建地图标注MAPointAnnotation,添加地图标注[_mapView addAnnotation:annotation];
  2. mapView:viewForAnnotation:回调函数,设置标注样式。

这里添加标注的代理方法,也可以把当前位置当做标注一样去显示出来,比较灵活。

11.自定义标注

自定义标注图标(基于大头针标注,可以自定义样式)

(1) 添加标注数据对象,可参考大头针标注的步骤(1)。

(2) 导入标记图片文件到工程中。这里我们导入一个名为restauant.png的图片文件。

(3) 在 协议的回调函数mapView:viewForAnnotation:中修改MAAnnotationView对应的标注图片。
关键代码:

annotationView.image = [UIImage imageNamed:@"restaurant"];
//设置中⼼心点偏移,使得标注底部中间点成为经纬度对应点
annotationView.centerOffset = CGPointMake(0, -18);
希望可以帮助大家,如有问题可加QQ群: 668562416 交流

如果哪里有什么不对或者不足的地方,还望读者多多提意见或建议

如需转载请联系我,经过授权方可转载,谢谢

目录
相关文章
|
定位技术 API
HarmonyOS实战:高德地图定位功能完整流程详解
本文详细介绍了在鸿蒙系统中使用高德地图实现完整定位功能的流程。首先分析需求,包括权限申请、检查GPS状态、单次或多次定位选择以及定位失败处理。接着通过代码实现具体步骤:添加定位权限、申请用户权限、检查GPS开关状态、启动定位服务,并处理定位成功或失败的情况。若定位失败,可尝试获取历史定位信息或使用默认位置。最后总结指出,虽然定位功能基础简单,但完整的流程与细节处理才是关键。建议读者动手实践,掌握高德地图定位功能的使用。
1460 15
|
10月前
|
自然语言处理 负载均衡 算法
推理速度提升300%:LLaMA4-MoE的FlashAttention-2集成与量化部署方案
本文详解LLaMA4-MoE模型架构与实现全流程,涵盖语料预处理、MoE核心技术、模型搭建、训练优化及推理策略,并提供完整代码与技术文档,助你掌握大模型MoE技术原理与落地实践。
579 6
|
定位技术 开发者
HarmonyOS实战:高德地图自定义定位图标展示
本文详细介绍了在鸿蒙系统中实现地图定位功能的开发流程与注意事项。首先,开发者需要申请两个必要的定位权限,并确保用户手动开启系统设置中的位置权限。接着,通过高德定位获取用户位置信息,并使用自定义图标替代默认的定位箭头。文章特别强调了经纬度数据必须为float类型,否则可能导致定位不准确。此外,还需检查系统的GPS定位按钮是否开启,以确保定位功能正常使用。通过本文的指导,开发者可以避免常见的定位问题,顺利完成地图定位功能的开发。
518 2
HarmonyOS实战:高德地图自定义定位图标展示
|
6月前
|
人工智能 自然语言处理 搜索推荐
数字人全息舱技术解析:产品优势、应用场景与商业价值全景透视
数字人全息舱融合AI、全息投影与实时渲染技术,打造立体悬浮、可交互的虚拟数字人,实现沉浸式人机对话。广泛应用于政务、文旅、医疗、教育、零售等领域,提供7×24小时智能服务,降低运营成本,提升体验与效率,推动虚实融合智能化升级。
1549 0
|
10月前
|
人工智能 安全 机器人
2025 年 AI 成为热点的原因及其驱动因素分析
2025年,人工智能技术飞速发展,从实验室走向产业应用,涵盖多模态大模型、智能体崛起、具身智能等热点。政策支持、市场需求推动AI在医疗、服务器、硬件产品等领域的全面落地,同时伦理监管逐步完善,全球治理协作加强,AI正从“工具”向“伙伴”转变。
1871 0
|
算法 5G 定位技术
室内导航怎么实现?解决方案与案例分享
本文探讨了室内导航的实现原理、关键技术、用户体验优化及未来发展趋势。通过Wi-Fi定位、蓝牙Beacon、UWB和视觉SLAM等多种技术,结合高精度地图绘制和路径规划算法,实现室内AR导航及定位导航。文章还介绍了性化服务和成功案例,展望了5G、物联网和AI等技术在室内导航中的应用前景。
2379 0
|
人工智能 自然语言处理 搜索推荐
AI与心理健康:情感支持的新形式
【10月更文挑战第31天】在快节奏的现代生活中,心理健康问题日益突出。AI技术的发展为情感支持提供了新形式,包括心理评估、情感监测、危机干预和个性化咨询。本文探讨了AI在心理健康领域的应用及其对个人和社会的深远影响。
1934 0
|
机器学习/深度学习 编解码 计算机视觉
阿里发布轨迹可控的DiT视频生成模型—Tora
【9月更文挑战第4天】阿里团队在视频生成领域取得了重要突破,推出了名为Tora的新模型。Tora基于Diffusion Transformer框架,旨在克服现有模型在物体运动控制上的局限。该模型整合了文本、视觉和轨迹条件,通过轨迹提取器、时空DiT和运动引导融合器三大组件,实现了高质量且运动一致的视频生成。Tora在多个基准数据集上表现出色,尤其在高运动保真度方面领先。然而,其应用仍需大量计算资源,并主要聚焦于可控轨迹视频生成。论文详情见:https://arxiv.org/abs/2407.21705
611 2
|
数据采集 搜索推荐 JavaScript
Uniapp连接iBeacon设备——实现无线定位与互动体验(理论篇)
Uniapp连接iBeacon设备——实现无线定位与互动体验(理论篇)
647 0
|
XML C语言 数据格式
[ros基础] --- roslaunch使用详解
[ros基础] --- roslaunch使用详解
940 0