高德地图初步使用-定位

article/2025/11/5 22:00:51

iOS系统不允许使用第三方定位,定位功能是对iOS系统定位的二次封装。通过封装,可将原始的定位点无偏差的显示在高德地图上。

注意:

1)2.3.0(含)之前版本的SDK,在iOS8中无法定位,请参考:iOS8无法定位的解决方案

2)2.4.0(含)以后版本需在info.plist中追加NSLocationWhenInUseUsageDescription或NSLocationAlwaysUsageDescription字段.其中:

  • NSLocationWhenInUseUsageDescription表示应用在前台的时候可以搜到更新的位置信息。
  • NSLocationAlwaysUsageDescription表示应用在前台和后台(suspend或terminated)都可以获取到更新的位置数据。

目前,有两种获取位置当前位置信息的方法:

方法一:使用iOS定位SDK

方法二:使用地图SDK中的定位功能,提供定位图层的显示,并且支持自定义定位图标和精度圈的样式。

只要开启定位开关(MAMapView的showsUserLocation属性)就可以开始定位。代码如下所示:

1
2
3
4
5
- ( void )viewDidLoad 
{
     [super viewDidLoad];
     _mapView.showsUserLocation = YES;     //YES 为打开定位,NO为关闭定位
}

当位置更新时,会进定位回调,通过回调函数,能获取到定位点的经纬度坐标,示例代码如下:

1
2
3
4
5
6
7
8
9
-( void )mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation
updatingLocation:( BOOL )updatingLocation
{
     if (updatingLocation)
     {
         //取出当前位置的坐标
         NSLog(@ "latitude : %f,longitude: %f" ,userLocation.coordinate.latitude,userLocation.coordinate.longitude);
     }
}


自定义定位图层:


定位图层有3种显示模式,分别为:

  • MAUserTrackingModeNone:不跟随用户位置,仅在地图上显示。
  • MAUserTrackingModeFollow:跟随用户位置移动,并将定位点设置成地图中心点。
  • MAUserTrackingModeFollowWithHeading:跟随用户的位置和角度移动。

通过以下代码可改变定位图层的显示模式:

1
[_mapView setUserTrackingMode: MAUserTrackingModeFollow animated:YES];  //地图跟着位置移动

自定义定位图层

定位图层由定位点处的标注(MAUserLocation)和精度圈(MACircle)组成。

对于3D矢量地图

  • 通过- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id <MAAnnotation>)annotation方法中自定义定位标注样式;
  • 通过- (MAOverlayView *)mapView:(MAMapView *)mapView viewForOverlay:(id <MAOverlay>)overlay方法自定义定位精度圈的样式。

注意:若想自定义定位经度圈样式,需先将 MAMapView 的customizeUserLocationAccuracyCircleRepresentation 属性设置为 YES。

代码如下:

_mapView.customizeUserLocationAccuracyCircleRepresentation = YES;

- (MAOverlayView *)mapView:(MAMapView *)mapView viewForOverlay:(id <MAOverlay>)overlay
{
     /* 自定义定位精度对应的MACircleView. */
     if (overlay == mapView.userLocationAccuracyCircle)
     {
         MACircleView *accuracyCircleView = [[MACircleView alloc] initWithCircle:overlay];
         
         accuracyCircleView.lineWidth    = 2.f;
         accuracyCircleView.strokeColor  = [UIColor lightGrayColor];
         accuracyCircleView.fillColor    = [UIColor colorWithRed:1 green:0 blue:0 alpha:.3];
         
         return accuracyCircleView;
     }
     return nil;
}
- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id <MAAnnotation>)annotation
{
     /* 自定义userLocation对应的annotationView. */
     if ([annotation isKindOfClass:[MAUserLocation  class ]])
     {
         static NSString *userLocationStyleReuseIndetifier = @ "userLocationStyleReuseIndetifier" ;
         MAAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:userLocationStyleReuseIndetifier];
         if (annotationView == nil)
         {
             annotationView = [[MAAnnotationView alloc] initWithAnnotation:annotation
                                                              reuseIdentifier:userLocationStyleReuseIndetifier];
         }
         annotationView.image = [UIImage imageNamed:@ "userPosition" ];// 这里的名字填写你要显示的图标
         
         return annotationView;
     }
     return nil;
}


后台定位:

高德地图iOS SDK V2.5.0版本提供后台持续定位的能力,即便你的app退到后台,且位置不变动时,也不会被系统挂起,可持久记录位置信息。该功能适用于记轨迹录或者出行类App司机端。

只需要您的做以下几步操作:

1.添加代码。

1
2
3
_mapView.pausesLocationUpdatesAutomatically = NO;
_mapView.allowsBackgroundLocationUpdates = YES; //iOS9以上系统必须配置

2.工程配置。

a)左侧目录中选中工程名,开启 TARGETS->Capabilities->Background Modes

b)在 Background Modes中勾选 Location updates,如下图所示:

backgroundlocation

注意:后台定位必须将info.plist的字段改成NSLocationAlwaysUsageDescription字段。





http://chatgpt.dhexx.cn/article/O44iVhlv.shtml

相关文章

高德地图使用——定位功能

在上一次中我们说到了如何申请key值&#xff0c;和在Application中如何配置&#xff0c;以及将地图显示出来。如果没看过的朋友们可以看一下笔者上一篇文章&#xff1a;最新高德地图使用&#xff08;SDK6.3.0版本&#xff09;——申请key、显示地图。在这一篇中&#xff0c;我们…

高德地图之定位篇-----定位、预测天气、围栏、搜索周边、行踪轨迹

跟集成百度地图一样&#xff0c;首先获取KEY,获取方式&#xff08;官方的截图&#xff09; 这篇主要是讲解高德地图定位篇&#xff0c;高德地图定位篇跟高德地图篇是不同的sdk&#xff0c;分离开了。。。 来看下配置流程吧&#xff0c;配置是第一位的 1.从网站下载并解压得到定…

解决电脑自动修复蓝屏问题(你的电脑未正确启动)

一.问题描述 电脑长时间未开机&#xff0c;开机蓝屏&#xff0c;显示自动修复&#xff0c;你的电脑未正确启动&#xff0c;如下图所示&#xff1a; 二。解决问题 1.点击高级选项-》疑难解答-》命令提示符&#xff1a; 2.在命令行中输入cd c:\windows\system32\drivers 3.再输…

如何完美解决解决win10系统--无法自动修复此计算机问题

前言 今天遇到一个糟心的问题就是开机时电脑无法正常开启&#xff0c;如图片所示。然后网上搜集了各种解决的办法都不管用&#xff0c;特别是百度给出的方法&#xff0c;根本就是坑人。如果你不想重装系统&#xff0c;而且想保留本电脑已有的程序和文件&#xff0c;可以参考本…

台式电脑怎么进入修复计算机,电脑为什么提示自动修复?电脑开机提示自动修复的解决办法...

小编朋友的电脑总是会出现一些奇奇怪怪的问题&#xff0c;这不电脑开机后就莫名其妙的提示需要启动修复&#xff0c;电脑无法正常启动导致无法使用&#xff0c;这问题该如何解决呢&#xff1f;可以参考小编下面的教程&#xff0c;看看对你有没有帮助。 电脑开机提示自动修复 ●…

当电脑开不了机出现自动修复时

当电脑开不了机出现自动修复时 电脑突然间开不了机&#xff0c;一直出现自动修复&#xff0c;然后修复失败。如下图 让人头疼&#xff0c;找了一下&#xff0c;有点担心时硬盘坏了&#xff0c;点了高级选项&#xff0c;选择疑难解答&#xff0c;再点高级选项&#xff0c;里面…

服务器开机提示修复,电脑开机提示自动修复怎么办?win10电脑开机提示自动修复教程...

我们在使用电脑的时候&#xff0c;开机后一般都会进入桌面。但有时候打开电脑后提示自动修复&#xff0c;显示电脑未能正确启动。电脑开机提示自动修复怎么办&#xff1f;下面就让小编为大家带来win10电脑开机提示自动修复教程。 首先大家一定会和我一样想这个问题&#xff0c;…

电脑开机显示自动修复失败无法进入系统的解决方法

案例场景 前几天由于电脑突然蓝屏&#xff0c;重启后&#xff0c;结果开机进不了系统&#xff0c;蓝屏显示自动修复失败&#xff0c;立马选了启动修复&#xff0c;但可想而知不起作用&#xff0c;如此重复多次后还是于事无补。经过两个小时的折腾&#xff0c;终于成功进入系统。…

电脑自动修复重启无法进入系统问题解决方案

电脑管家提示电脑需要修复漏洞&#xff0c;在修复之后使电脑睡眠了&#xff0c;可能定时重启的原因&#xff0c;导致了电脑不正常关机&#xff0c;打开电脑后就出现了蓝屏的情况&#xff0c;反复重启都无法进入系统&#xff0c;电脑里很多重要的东西&#xff0c;又不想重装系统…

windows10自动修复无法开机

Windows10操作系统于2015年7月29日正式发布&#xff0c;此后&#xff0c;win10也就成了新上市的笔记本电脑或者台式机电脑的预装操作系统&#xff01;win10系统给我们带了全新的体验&#xff0c;当然也带来了一定的烦恼&#xff01;就拿win10自动修复这个功能来说&#xff0c;玩…

电脑自动修复失败无限重启解决办法win10

1.写在前面的话 1.首先希望大家都有一个备份的意识&#xff0c;当电脑第一次出现问题时&#xff0c;你查了各种方法费尽九牛二虎之力修好&#xff0c;一定要设置一个系统还原点&#xff0c;这样以后电脑坏掉还有的救。 2.非必要情况&#xff0c;不要强制关机。 3.不要自己拆…

win10系统开机自动修复失败的解决方法

事情是这样的&#xff0c;在某一天的傍晚帮对象装了一个arcgis软件&#xff0c;学学科地理的同学应该都要用的&#xff0c;当然作为一个没有正版资源的人&#xff0c;首选了荡来的安装包&#xff0c;并试图安装&#xff0c;经过一顿操作&#xff0c;确认各项功能都可以正常使用…

win10自动修复电脑无法正常启动

问题描述&#xff1a; 昨天遇到的这个问题&#xff0c;起因是电脑卡&#xff0c;反复重启后还是觉得卡&#xff0c;于是强制关机&#xff0c;结果出现蓝屏&#xff0c;自动修复&#xff0c;电脑无法正常启动。参考了网上的相关解决方法&#xff0c;尝试在高级选项里面选择“禁用…

台式电脑怎么进入修复计算机,电脑开机提示自动修复怎么办?电脑开机自动修复处理方法...

对于很多电脑用户来说&#xff0c;偶尔会遇到电脑开机提示自动修复的情况&#xff0c;由于电脑无法正常开机&#xff0c;导致无法使用&#xff0c;问题显得就比较棘手了。首先大家一定会和小编一样想这个问题为什么我的电脑会出现这个提示&#xff1f; 电脑开机提示自动修复 ●…

计算机自动进入自动修复界面,电脑提示自动修复?戳这里几招解决,方法简单实用!...

原标题&#xff1a;电脑提示自动修复&#xff1f;戳这里几招解决&#xff0c;方法简单实用&#xff01; 很多用户遇到一个这样的问题&#xff0c;也不知道是什么原因&#xff0c;电脑有时候一开机就出现“启动修复”的界面。是不是没有正常将系统关闭呢&#xff1f;好像之前删过…

Win10自动修复无法开机【完美解决】

Windows10操作系统于2015年7月29日正式发布&#xff0c;此后&#xff0c;win10也就成了新上市的笔记本电脑或者台式机电脑的预装操作系统&#xff01;win10系统给我们带了全新的体验&#xff0c;当然也带来了一定的烦恼&#xff01;就拿win10自动修复这个功能来说&#xff0c;玩…

Win10无法开机提示自动修复无法修复你的电脑的有效解决方法

最近Win10系统出现了无法开机并无法自动修复系统的问题&#xff0c;然后提示了“自动修复&#xff0c;无法修复你的电脑”&#xff0c;在高级选项中尝试安全模式也无法进入。那么遇到这个问题&#xff0c;在不重装系统的情况下&#xff0c;我们要如何解决呢&#xff1f;下面装机…

Windows“自动修复”无法修复

想必很多Windows系统的用户都遇到了这个问题吧&#xff0c;本以为重启能解决所有问题&#xff0c;结果发现无限套娃了……怀揣着电脑里的猫片要丢失的担忧&#xff0c;死活不愿意重置的笔者找到了一种无须重置电脑&#xff0c;windows下的任何文件也不会丢失的简单修复方法。 废…

解决win10 自动修复失败电脑无法开机问题

写在前面的话&#xff1a; 1.博主不定期上线&#xff0c;所以有时候看到私信的时候&#xff0c;时间已经过去好久了&#xff0c;所以就不会回复私信了&#xff1b; 2.再就是写这篇博客仅仅是为了记录一下自己解决该问题的办法&#xff0c;博主本人对修电脑这方面也不是很在行&a…

电脑开机显示无法自动修复计算机,电脑开机提示自动修复怎么办?

对于经常使用电脑的用户来说&#xff0c;偶尔会遇到电脑开机提示自动修复的情况。电脑无法正常开机&#xff0c;随便操作又怕丢了电脑数据。接下来快启动为大家带来几招电脑开机进入自动修复状态的处理方法&#xff0c;有需要的朋友请继续往下看。 电脑开机提示自动修复 ●我之…