// 在info.plist 添加配置 上线对应的值要写说明

NSLocationAlwaysUsageDescription

NSLocationWhenInUseUsageDescription

#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>@interface ViewController ()
<
CLLocationManagerDelegate,
MKMapViewDelegate
>@property(nonatomic,strong)MKMapView *mapView;
/// 定位管理器
@property(nonatomic,strong)CLLocationManager *locationManager;
/// 放大缩小用
@property (nonatomic) MKCoordinateRegion region;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];// Do any additional setup after loading the view.[self.view addSubview:self.mapView];[self.locationManager startUpdatingLocation];
}#pragma mark ————————— 地图位置更新 —————————————
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{MKCoordinateRegion region;CLLocationCoordinate2D centerCoordinate = mapView.region.center;region.center = centerCoordinate;_region = region;NSLog(@" 经纬度 %f,%f",centerCoordinate.latitude, centerCoordinate.longitude);CLLocation *location = [[CLLocation alloc]initWithLatitude:centerCoordinate.latitude longitude:centerCoordinate.longitude];[self cityNameFromLoaction:location block:^(CLPlacemark *place, NSString *city) {}];}#pragma mark-CLLocationManagerDelegate
/**
*  更新到位置之后调用
*
*  @param manager   位置管理者
*  @param locations 位置数组
*/
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:( NSArray *)locations
{NSLog(@"定位到了");//停止位置更新[manager stopUpdatingLocation];CLLocation *location = [locations firstObject];//位置更新后的经纬度CLLocationCoordinate2D theCoordinate =  location.coordinate;//设置地图显示的中心及范围MKCoordinateRegion theRegion;theRegion.center = theCoordinate;// 坐标跨度MKCoordinateSpan theSpan;theSpan.latitudeDelta = 0.01;theSpan.longitudeDelta = 0.01;theRegion.span = theSpan;[self.mapView setRegion:theRegion];[self cityNameFromLoaction:location block:^(CLPlacemark *place, NSString *city) {NSLog(@"位置:%@", place.name);}];
}#pragma mark ————————— 地理位置返编码 —————————————
-(void)cityNameFromLoaction:(CLLocation *)location block:(void(^)(CLPlacemark *place ,NSString *city))block
{__weak typeof(self) weakSelf = self;CLGeocoder *geocoder = [[CLGeocoder alloc]init];[geocoder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {if (!error){for (CLPlacemark *place in placemarks){NSDictionary *location = [place addressDictionary];
//                NSLog(@"位置:%@", place.name);
//                NSLog(@"国家:%@", place.country);
//                NSLog(@"城市:%@", place.locality);
//                NSLog(@"区:%@", place.subLocality);
//                NSLog(@"街道:%@", place.thoroughfare);
//                NSLog(@"子街道:%@", place.subThoroughfare);// 将获得的所有信息显示到label上// 获取城市NSString *city = place.name;// 设置地图显示的类型及根据范围进行显示  安放大头针[weakSelf addPointFromCoordinate:place.location.coordinate title:city];block(place ,place.name);}}else{NSLog(@"%@",error);}}];
}#pragma mark ————————— 长按添加大头针事件 —————————————
- ( void )lpgrClick:( UILongPressGestureRecognizer *)lpgr
{// 判断只在长按的起始点下落大头针if (lpgr.state == UIGestureRecognizerStateBegan ){// 首先获取点CGPoint point = [lpgr locationInView:self.mapView];// 将一个点转化为经纬度坐标CLLocationCoordinate2D center = [self.mapView convertPoint:point toCoordinateFromView:self.mapView];[self addPointFromCoordinate:center title:@"位置"];}
}#pragma mark ————————— 添加大头针 —————————————
-(void)addPointFromCoordinate:(CLLocationCoordinate2D)coordinatetitle:(NSString *)title
{NSLog(@"当前城市:%@" ,title);self.title = title;MKPointAnnotation *pinAnnotation = [[MKPointAnnotation alloc] init];pinAnnotation.coordinate = coordinate;pinAnnotation.title = title;[self.mapView removeAnnotations:self.mapView.annotations];[self.mapView addAnnotation:pinAnnotation];
}/***  授权状态发生改变时调用**  @param manager 位置管理者*  @param status  状态*/
-(void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status
{switch (status) {// 用户还未决定case kCLAuthorizationStatusNotDetermined:{NSLog(@"用户还未决定");break;}// 问受限case kCLAuthorizationStatusRestricted:{NSLog(@"访问受限");break;}// 定位关闭时和对此APP授权为never时调用case kCLAuthorizationStatusDenied:{// 定位是否可用(是否支持定位或者定位是否开启)if([CLLocationManager locationServicesEnabled]){NSLog(@"定位开启,但被拒");}else{NSLog(@"定位关闭,不可用");}break;}// 获取前后台定位授权case kCLAuthorizationStatusAuthorizedAlways:{//  case kCLAuthorizationStatusAuthorized: // 失效,不建议使用NSLog(@"获取前后台定位授权");break;}// 获得前台定位授权case kCLAuthorizationStatusAuthorizedWhenInUse:{NSLog(@"获得前台定位授权");break;}default:break;}
}//获取当前位置
-(CLLocationManager *)locationManager{if (!_locationManager) {CLLocationManager * locationManager = [[CLLocationManager alloc] init];locationManager.delegate = self ;//kCLLocationAccuracyBest:设备使用电池供电时候最高的精度locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters;locationManager.distanceFilter = 50.0f;if (([[[ UIDevice currentDevice] systemVersion] doubleValue] >= 8.0)){[locationManager requestAlwaysAuthorization];}_locationManager = locationManager;}return _locationManager;
}-(MKMapView *)mapView{if (!_mapView) {MKMapView *mapView = [[MKMapView alloc]init];// 接受代理mapView.delegate = self;mapView = [[MKMapView alloc]initWithFrame:self.view.bounds];mapView.zoomEnabled = YES ;mapView.showsUserLocation = YES ;mapView.scrollEnabled = YES ;mapView.delegate = self ;// 长按手势  长按添加大头针UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc]initWithTarget: self action: @selector (lpgrClick:)];[mapView addGestureRecognizer:lpgr];_mapView = mapView;}return _mapView;
}@end

iOS 获取地图视图中心点经纬度长按添加大头针相关推荐

  1. Python,地理地图可视化:plotly绘制mapbox地图城市中心点经纬度marker标记

    Python地理地图可视化:plotly标记mapbox地图城市中心点经纬度marker import plotly.graph_objects as goKEYS = ['中心点经纬度', '维度' ...

  2. iOS MKMapView 地图视图

    有时候我们做项目可能会用到地图,比如在地图上显示附近人,在微博客户端中显示附近微博... 所以我们有必要来了解一下关于地图视图 地图视图 MKMapView 继承与UIView 先来看一下属性吧 @p ...

  3. iOS获取视频文件大小和时长

    1 .获取网络链接的视频大小和时长 AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];// url:网络视频的连接NSA ...

  4. 高德地图大头针功能_【iOS】高德地图MAMapKit的使用:地图显示、添加大头针、导航、定位功能介绍...

    最近在做基于高德地图的定位.导航及添加大头针的功能,特此记录下来...方便刚接触的同学参考... 一.申请 Key:获取用户Key 2.在"KEY管理"页面点击上方的"获 ...

  5. 【iOS】高德地图MAMapKit的使用:地图显示、添加大头针、导航、定位功能介绍

    最近在做基于高德地图的定位.导航及添加大头针的功能,特此记录下来...方便刚接触的同学参考... 一. 申请 Key 获取用户Key: 1.访问 http://lbs.amap.com/console ...

  6. Maps模块管理地图控件,用于在web页面中显示地图控件,提供各种接口操作地图控件,如添加标点、路线等。通过plus.maps可获取地图管理对象

    方法: openSysMap: 调用系统第三方程序进行导航 create: 创建Map对象 getMapById: 查找已经创建的Map对象 对象: Map: 地图控件对象 MapStyles: 地图 ...

  7. 大疆文档(7)-Android教程-地图视图和航点App

    本节全篇为大疆 Mobile SDK 安卓教程 部分,ios教程参见 IOS教程 . 地图视图和航点应用程序 在本教程中,您将学习如何实现 DJIWaypoint Mission 功能并熟悉Missi ...

  8. 高德地图获取当前屏幕中心点的经纬度

    公司有个需求就是要随着屏幕的改变而加载附近的商户信息. 那么高德地图获取当前屏幕中心点的经纬度呢? 核心方法:aMap.setOnCameraChangeListener(this); 实现接口: @ ...

  9. GoogleMap获取地图中心点位置信息

    最近开发一款海外项目,用到地图的功能,肯定选择的是谷歌地图. 功能有获取用户当前定位并标记,标记用户周围的骑手位置:谷歌地图搜索地址:地图上标记两个点并画出两点的直线距离或者路线距离.这个一堆的功能对 ...

最新文章

  1. 卷积神经网络--CNN
  2. Sqlyog的安装使用
  3. iOS-仿支付宝加载web网页添加进度条
  4. ELK分析tomcat的Catalina.out日志
  5. Deepin下安装搭建latex编写环境
  6. 基于React的AmazeUI-touch使用(如何使用react)
  7. linux workon 命令,安装python虚拟运行环境,linux下配置workon切换虚拟环境
  8. qt初步---Qt实现软件从Windows到Linux跨平台
  9. 咸鱼笔记-编程语言优缺点
  10. 五子课堂---第一课(连珠基础一)
  11. 《统计会犯错——如何避免数据分析中的统计陷阱》导读
  12. 在COMSOL中固体力学模块中添加 力矩 扭矩
  13. 行星月球科学探索成绩斐然 桌面实验或可理解黑洞性质
  14. kali 查看ip地址
  15. 《全球互联网金融商业模式:格局与发展》——第3章,第2节互联网保险经纪/代理公司...
  16. 【Java基础】类的具体细节
  17. 微信播放在服务器视频无法播放音乐,【bug解决】ios微信浏览器中背景音乐无法播放...
  18. 关于axios配置拦截器不生效的问题
  19. 聊聊从逻辑门到操作系统的计算机
  20. micropython刷固件

热门文章

  1. Matlab浮点数精度问题在计算中的避免方法
  2. python3 新式类的继承顺序 广度优先
  3. GJB 研制总结(模板)
  4. 歌``大家``一起来``留下好歌共赏```
  5. 股票做空简述,一些关于股票做空的看法
  6. 继 1.4亿美国用户遭殃后,Equifax 让40万英国人的信息也面临风险
  7. Java 利用poi给word添加页眉页脚,页眉左边为公司logo图片,右为公司全称,页脚左为公司地址,右为页码总页数
  8. 百度云×百信银行:金融科技点亮智惠生活
  9. 陀螺产业区块链第三季 | 基于区块链的百信银行商户清算方案
  10. c primer plus电子版_2019年全国大学生英语竞赛C类(NECCS)决赛试题+答案解析