地图定位导航

2024-03-09 10:08
文章标签 地图 定位导航

本文主要是介绍地图定位导航,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在info.plist文件中加两个key分别是NSLocationAlwaysUsageDescription,
Privacy - Location Usage Description
#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>@interface ViewController ()<CLLocationManagerDelegate, MKMapViewDelegate>
@property(nonatomic, strong)CLLocationManager *locMgr;
@property(nonatomic, strong)MKMapView *mapView;
@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view, typically from a nib.self.view.backgroundColor = [UIColor grayColor];[self.view addSubview:self.mapView];if ([self.locMgr respondsToSelector:@selector(requestAlwaysAuthorization)]) {[self.locMgr requestAlwaysAuthorization];}//  判断用户定位服务是否开启if ([CLLocationManager locationServicesEnabled]) {//  开始定位用户的位置[self.locMgr startUpdatingLocation];//  每隔多少米定位一次self.locMgr.distanceFilter = kCLDistanceFilterNone; //  这里设置为任何移动都会进行定位//  设置定位的精度, 一般精准度越高, 越耗电(这里设置为精准度最高的, 适用于导航应用)self.locMgr.desiredAccuracy = kCLLocationAccuracyBestForNavigation;NSLog(@"已定位");} else {NSLog(@"未授权定位");//  不能定位用户的位置//  1. 提醒用户检查当前的网络状态//  2. 提醒用户打开定位开关UIAlertController *alertView = [UIAlertController alertControllerWithTitle:@"无法定位" message:@"请检查定位服务是否打开或网络服务是否良好" preferredStyle:UIAlertControllerStyleAlert];UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:nil];[alertView addAction:okAction];[self presentViewController:alertView animated:YES completion:nil];}//  测试方法, 计算两个位置之间的距离[self countDistance];//  打开系统地图进行导航定位CLLocationCoordinate2D startCoor = self.mapView.userLocation.coordinate;CLLocationCoordinate2D endCoor = CLLocationCoordinate2DMake(startCoor.latitude + 0.01, startCoor.longitude + 0.01);MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation];MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithCoordinate:endCoor addressDictionary:nil]];toLocation.name = @"to name";[MKMapItem openMapsWithItems:@[currentLocation, toLocation] launchOptions:@{MKLaunchOptionsDirectionsModeKey: MKLaunchOptionsDirectionsModeDriving, MKLaunchOptionsShowsTrafficKey:[NSNumber numberWithBool:YES]}];}- (MKMapView *)mapView {if (!_mapView) {self.mapView = [[MKMapView alloc] initWithFrame:[UIScreen mainScreen].bounds];self.mapView.mapType = MKMapTypeSatellite;self.mapView.delegate = self;}return _mapView;
}#pragma mark    - CLLocationManagerDelegate
//  当定位到用户位置时, 就会调用(调用频率比较频繁)
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations {NSLog(@"dfasdfa");//  locations数组里存放的是CLLocation对象, 一个CLLocation对象就代表着一个位置CLLocation *loc = [locations firstObject];//  纬度://  经度:NSLog(@"纬度 = %f,经度  = %f", loc.coordinate.latitude, loc.coordinate.longitude);NSLog(@"%ld", locations.count);//  停止更新位置 (如果定位服务不需要实时更新的话, 那么应该停止位置的更新)//    [self.locMgr stopUpdatingLocation];
}- (void)countDistance {//  根据经纬度创建两个位置对象CLLocation *loc1 = [[CLLocation alloc] initWithLatitude:40 longitude:116];CLLocation *loc2 = [[CLLocation alloc] initWithLatitude:41 longitude:116];//  计算两个位置之间的距离CLLocationDistance distance = [loc1 distanceFromLocation:loc2];NSLog(@"(%@) 和 (%@) 的距离 = %fM", loc1, loc2, distance);
}
#pragma mark    - 懒加载
- (CLLocationManager *)locMgr {if (!_locMgr) {//  1. 创建位置管理器self.locMgr = [[CLLocationManager alloc] init];//  2. 设置代理_locMgr.delegate = self;}return _locMgr;
}

这篇关于地图定位导航的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/790347

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

全英文地图/天地图和谷歌瓦片地图杂交/设备分布和轨迹回放/无需翻墙离线使用

一、前言说明 随着风云局势的剧烈变化,对我们搞软件开发的人员来说,影响也是越发明显,比如之前对美对欧的软件居多,现在慢慢的变成了对大鹅和中东以及非洲的居多,这两年明显问有没有俄语或者阿拉伯语的输入法的增多,这要是放在2019年以前,一年也遇不到一个人问这种需求场景的。 地图应用这块也是,之前的应用主要在国内,现在慢慢的多了一些外国的应用场景,这就遇到一个大问题,我们平时主要开发用的都是国内的地

Imageview在百度地图中实现点击事件

1.首先第一步,需要声明的全局有关类的引用 private BMapManager mBMapMan; private MapView mMapView; private MapController mMapController; private RadioGroup radiogroup; private RadioButton normalview; private RadioBu

MMO地图传送

本篇由以下四个点讲解: 创建传送点 传送点配置 编辑器扩展:传送点数据生成 传送协议与实现 创建传送点 建碰撞器触发 //位置归零 建一个传送门cube放到要传送的位置(这个teleporter1是传出的区域 这是从另一张地图传入时的传送门 创建一个脚本TeleporterObject给每个传送cube都绑上脚本 通过脚本,让传送门在编辑器下面还能绘制出来

ArcGIS Pro SDK (十三)地图创作 3 特殊图层

ArcGIS Pro SDK (十三)地图创作 3 特殊图层 文章目录 ArcGIS Pro SDK (十三)地图创作 3 特殊图层1 高程表面图层1.1 创建具有地表图层的场景1.2 创建新的高程表面1.3 将自定义高程表面设置为 Z 感知图层1.4 将高程源添加到现有高程表面图层1.5 从地图中获取高程表面图层和高程源图层1.6 查找高程表面图层1.7 移除高程表面图层1.8 从曲面获

激光SLAM如何动态管理关键帧和地图

0. 简介 个人在想在长期执行的SLAM程序时,当场景发生替换时,激光SLAM如何有效的更新或者替换地图是非常关键的。在看了很多Life-Long的文章后,个人觉得可以按照以下思路去做。这里可以给大家分享一下 <br/> 1. 初始化保存关键帧 首先对应的应该是初始化设置,初始化设置当中会保存关键帧数据,这里的对应的关键帧点云数据会被存放在history_kf_lidar当中,这个数据是和

产品地图经典案例,为盲人设计一款闹钟

在产品设计的旅程中,复杂程度往往超乎你的想象。从理解产品设计的初衷,到制定具体目标,再到解决实际问题,这一过程涉及许多环节。以下是如何通过即时设计在线白板高效绘制产品地图,以便更好地进行产品设计的具体示例——为盲人设计一款闹钟。 即时设计在线白板是一个高效便捷的可视化工具,可以帮助团队更好地协作和整理思路。我们将通过实际案例来展示如何使用它绘制产品地图。https://js.design/?so

Uber开发的地图网格化的包h3

通常使用规则化的网格包括三角形,正方形和六边形。三角形或正方形的网格与其相邻的网格中心距离不同,而六边形则没有此种情况,因此,h3使用的是六边形网格. 地图的网格划分以南京为例子 api文档 https://github.com/uber/h3-py https://h3geo.org/docs/community/bindings 在这里插入图片描述h3包地图划分级别,第一列是边长 H3 P

echarts地图绘制并实现下钻功能

本文参考网址 使用echarts地图需要先准备好echarts地图渲染需要的json数据,数据可以从阿里云地址中下载自己需要的,下载之后直接引入即可使用,本文针对全国地图做一个简单的demo 阿里云界面如图 // 1、准备echarts地图容器<div class="map" ref="myChart" style="width:500px;height:500px;"></div>//

geodatatool(地图资源工具)3.8

geodatatool(地图资源工具)3.8(新)修复更新,修复更新包括: 1.优化在线地图多线程下载及用户体验。 注意:在线地图下载与背景地图显示用的是同样的源,所以在线地图是否能下载,可以先测试主地图背景地图是否能展示。如背景地图能展示,则该在线地图也能下载! 在线地图数据源可根据需要添加,且数据下载具有缓存功能,所有在线数据无论访问还是下载。都会在本地缓存。所以