CoreLocation的使用 定位 既地理编码与反地理编码

swift地图定位(八)获取当前城市名称(定位+反地理编码) import UIKit import CoreLocation class ViewController: UIViewController { lazy var locationM: CLLocationManager = {//info.plist add :Privacy - Location Always Usage Description let locati 阅读详情

地理编码即用经纬度获取详细的地理信息

反地理编码即用模糊的地理信息获取相应的地理信息

两点之间的距离的计算


//
//  ViewController.m
//  2014_11_03_CoreLocation的使用
//
//  Created by Mac10.9 on 14-11-3.
//  Copyright (c) 2014年 xiaoxiaobing. All rights reserved.
#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>

@interface ViewController ()<CLLocationManagerDelegate , UIActionSheetDelegate]] >
@property (nonatomic, strong) CLLocationManager *locMgr;

#pragma mark - 解码
/**
 *  解码器
 */
@property (nonatomic, strong) CLGeocoder *geocoder;

#pragma mark - 地理编码
- (IBAction)geocode;
@property (weak, nonatomic) IBOutlet UITextField *addressField;
@property (weak, nonatomic) IBOutlet UILabel *longitudeLabel;
@property (weak, nonatomic) IBOutlet UILabel *latitudeLabel;
@property (weak, nonatomic) IBOutlet UILabel *detailAddressLabel;

#pragma mark - 反地理编码
- (IBAction)reverseGeocode;
@property (weak, nonatomic) IBOutlet UITextField *longtitudeField;
@property (weak, nonatomic) IBOutlet UITextField *latitudeField;
@property (weak, nonatomic) IBOutlet UILabel *reverseDetailAddressLabel;



@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self setupCLLocationManager];
}
/**
 *  对CLLocationManager 进行初始化
 */
- (void)setupCLLocationManager
{
    
    // 开始定位用户的位置
    
    [self.locMgr startUpdatingLocation];
    //询问永久定位服务
    [self.locMgr requestAlwaysAuthorization];
    
    //    // 开始监控某个位置 (在某个范围里该干什么事,除了范围又要干什么事)
    //    CLRegion *region = [[CLRegion alloc] init];
    //    /**
    //     ........
    //     */
    //    [self.locMgr startMonitoringForRegion:region];
}

/**
 *  懒加载
 */
- (CLLocationManager *)locMgr
{
#warning 定位服务不可用
    if(![CLLocationManager locationServicesEnabled])
    {
        /**
         只有系统的定位功能是关闭的时候才会调用这个方法
         */
        UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"定位不可用" delegate:self cancelButtonTitle:@"请去系统中打开定位功能" destructiveButtonTitle:@"取消" otherButtonTitles: nil];
        [sheet showInView:self.view];
        return nil;
    }
    
    if (!_locMgr)
    {
        // 创建定位管理者
        self.locMgr = [[CLLocationManager alloc] init];
        // 设置代理
        self.locMgr.delegate = self;
    }
    return _locMgr;
}
/**
 *  计算两个点之间的距离
 */
- (void)countLineDistance
{
    // 计算2个经纬度之间的直线距离
    CLLocation *loc1 = [[CLLocation alloc] initWithLatitude:40 longitude:116];
    CLLocation *loc2 = [[CLLocation alloc] initWithLatitude:41 longitude:116];
    CLLocationDistance distance = [loc1 distanceFromLocation:loc2];
    NSLog(@"%f", distance);
}
#pragma mark - CLLocationManagerDelegate
/**
 *  只要定位到用户的位置,就会调用(调用频率特别高)
 *  @param locations : 装着CLLocation对象
 */
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{
    // 1.取出位置对象
    CLLocation *loc = [locations firstObject];
    // 2.取出经纬度
    CLLocationCoordinate2D  coordinate2D = loc.coordinate;
    
    // 3.打印经纬度
    
    NSLog(@"维度%lf  经度%lf",coordinate2D.latitude , coordinate2D.longitude);
    // 停止定位(省电措施:只要不想用定位服务,就马上停止定位服务)
    [manager stopUpdatingLocation];
}

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    
}

#pragma mark -解码相关

- (CLGeocoder *)geocoder
{
    if (!_geocoder) {
        self.geocoder = [[CLGeocoder alloc] init];
    }
    return _geocoder;
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    [self.view endEditing:YES];
}

/**
 *  地理编码
 */
- (IBAction)geocode {
    NSLog(@"地理编码ing。。。。。。");
    NSString *address = self.addressField.text;
    if (address.length == 0) return;
    
    [self.geocoder geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error) {
        if (error) { // 有错误(地址乱输入)
            self.detailAddressLabel.text = @"你找的地址可能只在火星有!!!";
        } else { // 编码成功
            // 取出最前面的地址
            CLPlacemark *pm = [placemarks firstObject];
            
            // 设置经纬度
            self.latitudeLabel.text = [NSString stringWithFormat:@"%.1f", pm.location.coordinate.latitude];
            self.longitudeLabel.text = [NSString stringWithFormat:@"%.1f", pm.location.coordinate.longitude];
            
            // 设置具体地址
            self.detailAddressLabel.text = pm.name;
            
            //            NSLog(@"总共找到%d个地址", placemarks.count);
            //
            //            for (CLPlacemark *pm in placemarks) {
            //                NSLog(@"-----地址开始----");
            //
            //                NSLog(@"%f %f %@", pm.location.coordinate.latitude, pm.location.coordinate.longitude, pm.name);
            //
            //                [pm.addressDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
            //                    NSLog(@"%@ %@", key, obj);
            //                }];
            //
            //                NSLog(@"-----地址结束----");
            //            }
        }
    }];
}

/**
 *  反地理编码
 */
- (IBAction)reverseGeocode {
    // 1.包装位置
    CLLocationDegrees latitude = [self.latitudeField.text doubleValue];
    CLLocationDegrees longitude = [self.longtitudeField.text doubleValue];
    CLLocation *loc = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
    
    // 2.反地理编码
    [self.geocoder reverseGeocodeLocation:loc completionHandler:^(NSArray *placemarks, NSError *error) {
        if (error) { // 有错误(地址乱输入)
            self.reverseDetailAddressLabel.text = @"你找的地址可能只在火星有!!!";
        } else { // 编码成功
            // 取出最前面的地址
            CLPlacemark *pm = [placemarks firstObject];
            
            // 设置具体地址
            self.reverseDetailAddressLabel.text = pm.name;
            //            NSLog(@"总共找到%d个地址", placemarks.count);
            //
            //            for (CLPlacemark *pm in placemarks) {
            //                NSLog(@"-----地址开始----");
            //
            //                NSLog(@"%f %f %@", pm.location.coordinate.latitude, pm.location.coordinate.longitude, pm.name);
            //
            //                [pm.addressDictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
            //                    NSLog(@"%@ %@", key, obj);
            //                }];
            //
            //                NSLog(@"-----地址结束----");
            //            }
        }
    }];
}
@end


iOS开发 - CoreLocation地理定位 简介在移动互联网时代,移动app能解决用户的很多生活琐事,比如 导航:去任意陌生的地方 周边:找餐馆、找酒店、找银行、找电影院在上述应用中,都用到了地图和定位功能,在iOS开发中,要想加入这2大功能,必须基于2个框架进行开发 Map Kit :用于地图展示 Core Location :用于地理定位2个热门专业术语 LBS :Location Based Service SoLoMo : 阅读详情

相关推荐

微信聊天记录数据库解密实战:从WCDB到sqlcipher4的关键步骤解析

本文详细解析了微信桌面版聊天记录数据库的解密实战过程。通过逆向分析,定位了微信从WCDB框架到sqlcipher4加密的关键步骤,并成功提取了数据库密钥。文章重点介绍了如何通过动态调试、字符串定位等方法,追踪并验证sqlcipher4的加密密钥,最终实现对加密数据库文件的解密操作,为安全研究和数据恢复提供了技术参考。

weixin_29322553的博客 1071

第九章:使用CoreLocation定位

CoreLocation框架(CoreLocation.framework)可用于定位设备当前的经纬度,通过该框架,应用程序可通过附近的蜂窝基站、WIFI信号或者GPS等信息计算用户位置。iOS SDK提供了CLLocationManager、CLLocationManagerDelegate来处理设备的定位信息,包括获取设备的方向以及进行方向检测等。其中CLLocationManager是整个Co

xiaoxiaobukuang的专栏 8119

Python爬虫实战:从巨潮网批量抓取上市公司年报JSON数据

网络爬虫作为自动化数据采集的核心技术,其原理是通过模拟浏览器行为向服务器发送HTTP请求并解析响应,从而高效获取结构化信息。在金融数据分析领域,这项技术价值尤为突出,能够将研究人员从繁琐的手工数据收集中解放出来,聚焦于更高阶的模型构建与价值挖掘。典型的应用场景包括上市公司财务研究、市场趋势分析和风险预警系统开发。本文以Python的requests库为核心工具,详细解析如何通过分析巨潮资讯网的JSON数据接口,构建一个稳定、高效的上市公司年报数据采集管道,并重点探讨了接口逆向、分页爬取、PDF文件下载等关键

weixin_42529366的博客 1236

高德地图之逆地理编码

上一篇讲述了地理编码的使用,没看的朋友可以看看http://blog.youkuaiyun.com/hedong_77/article/details/54287292,Ok,我们继续来看你地理编码,首先要理解它的概念,逆地理编码,又称地址解析服务,是指从已知的经纬度坐标到对应的地址描述(如行政区划、街区、楼层、房间等)的转换。常用于根据定位的坐标来获取该地点的位置详细信息,与定位功能是黄金搭档。也就是坐标转地

Hedong的博客 1万+

深入解析五大ADC芯片架构及其应用场景

本文深入解析了五大ADC芯片架构及其应用场景,包括逐次逼近型ADC、Σ-Δ型ADC、流水线型ADC、闪存型ADC和积分型ADC。通过详细的架构分析和实际应用案例,帮助工程师理解不同ADC芯片的特点和适用场景,提升电路设计效率。

weixin_28702105的博客 355

OpenStack [ compute_id ] 设计上的小缺陷

而 nova 代码中硬编码(或默认配置)将 compute_id 放在 site-packages 目录,属于 设计上的小缺陷—— 把 “库安装目录” 和 “运行时数据目录” 混在一起了,才导致需要临时调整这个目录的权限。# 配置项说明:node_identity_file 是 nova 用于指定节点标识文件路径的官方配置项,优先级高于代码中的默认路径。自定义 compute_id 路径,指向 /var/lib/nova/ 目录下的 compute_id 文件;

求知若渴,虚心若愚。 491

关于coreLocation - 地理位置反向编码

CoreLocation中得到的定位信息都是以经度和纬度等表示的地理信息,很多时候我们需要把它反向编码成普通人能读懂的地理位置描述如:X国XX市XXX区XXX街道XX号,这就需要用到MapKit中的一个地理位置反向编码工具:MKReverseGeocoder, 用法:

JulyChen的专栏 5720

[VCS]VCS dump fsdb的精细化控制

本文介绍了VCS FSDB波形dump的精细化控制方法。主要内容包括:1)基本dump方式;2)通过$fsdbDumpoff排除特定层次;3)使用$fsdbDumpvars选择性dump指定模块;4)运行时动态控制dump开关;5)通过文件管理排除列表($fsdbDumpoffFile或自定义读取);6)层次控制策略(剪除整棵树或仅当前层)。这些方法可有效控制波形文件大小,提高仿真效率。

元直的博客 1033

百度定位+精确定位+模糊城市定位

百度定位相信大家都会使用,作为一个一年经验的安卓经验的新人,我也就不多说什么了.今天要给大家带来的是一个模糊定位,一个小小的需求,就是根据自己的定位地点的经纬度,解析旁边城市的经纬度,得到一个距离最近的城市.详细的和大家描述一下. 比如点 深圳(x1,y1)–>(地点名称)(纬度,经度) 北京(x2,y2)–>(地点名称)(纬度,经度) 如果我现在的定位地点是广

hyf97135的博客 6840

涨点神器:基于YOLOv8的SPD-Conv小目标检测实战教程——让低分辨率场景检测精度飙升

从代码修改到场景落地,每一步都围绕“提升检测精度”这个核心目标,而实际数据也证明了这项技术的强悍——它不是实验室里的花拳绣腿,而是能真正解决工业痛点的涨点神器。在实际场景中,比如无人机巡检的低分辨率航拍图中,对电线、小设备的检测,YOLOv8-SPD的漏检率降低了70%以上。落地时,只需将训练好的YOLOv8-SPD模型部署到边缘设备或云端,即可享受其在小目标、低分辨率场景下的强大性能。的特征融合模块中,通过插入SPD-Conv,让模型在处理小目标时,既能保留空间细节,又能增强通道维度的特征表达。

m0_71589036的博客 157

2021.07.05【R语言】丨预测lncRNA并绘制venn图

目录摘要环境与方法依赖工具预测工具绘制工具使用命令预测lncRNA统计noncoding_ID绘制Venn图结果展示总结 摘要 接到一个单样品测lncRNA数据的项目,正好拿来练练手,梳理一下lncRNA流程。这里记录预测lncRNA并生成venn图的过程 环境与方法 R version 3.6.3 (2020-02-29) 依赖工具 预测工具 CPC2 CNCI Pfam CPAT 绘制工具 R:VennDiagram 使用命令 预测lncRNA CPC2 #更换env conda activate py

2035

地理编码与反编码

简单说下地理编码是干啥的,地理编码就是把我们所说的地名转换为位置信息,这个位置信息包括很多,主要是里面的经纬度,通过它可以定位到自己的位置在哪。 反编码就是地理编码的反过程,是让我们点下地图就能知道这个地方的名字,和一些相关的信息 这些操作比较耗时所以用异步方式操作 编、解码      大家都应该知道我们用到地理或者地图,需要定位,就要导入#import 头文件 先看地理编码:

家的博客 680

RK3588网卡出现丢包或者带宽不足的问题验证排查

注意除了有最大的TCP数据接收缓冲,还有/proc/sys/net/core/wmem_max — 最大的TCP数据发送缓冲可以调整,这里暂时没用到,针对具体需要可适当调整。比如把ethx接口中断从默认的cpu0迁移到其它cpu,例如将eth0中断234移到cpu7 (10是16进制, cpu0 =3588的cpu有8个核,4个A55(小核)+4个A76(大核),可以找到对应中断 将中断从默认cpu0核切到cpu7。tcp_rmem:单位是字节,接收缓存区大小,缓存从对端接收的数据,后续会被应用程序读取。

Android/Linux驱动开发传帮带学习,让驱动入门门槛更低! 2030

CoreLocation 定位

前言: 本章会使用OC和Swift分别进行实现,需要了解Swift的小伙伴可以翻一下之前的博文LBS和SoloMo(索罗门) LBS:基于位置的服务,根据定位展示周边美食、景点等信息(全称:Location Bassed Service) SoloMo:将位置社交、本地、移动化(全称:Soclal Local Moblle) 社交化:在APP内加入一些社交元素,进行位置分享等 本地化:基于LBS

黑森林工作室 5173

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IOS学习之——CoreLocation定位的使用

在移动互联网时代,移动app能解决用户的很多生活琐事,比如 导航:去任意陌生的地方 周边:找餐馆、找酒店、找银行、找电影院在上述应用中,都用到了地图和定位功能,在iOS开发中,要想加入这2大功能,必须基于2个框架进行开发 Map Kit :用于地图展示 Core Location :用于地理定位2个热门专业术语 LBS :Location Based Service SoLoMo :Social L

TenMios的博客 603

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IOS CoreLocation框架的使用(用于地理定位)

● 在移动互联网时代,移动app能解决用户的很多生活琐事,比如 ● 导航:去任意陌生的地方 ● 周边:找餐馆、找酒店、找银行、找电影院 ● 在上述应用中,都用到了地图和定位功能,在iOS开发中,要想加入这2 大功 能,必须基于2个框架进行开发 ● Map Kit :用于地图展示 ● Core Location :用于地理定位 ● 2个热门专业术语 ● L...

weixin_30492601的博客 158

【iOS干货】☞ 定位

一、简介   定位是一个很常用的功能,如一些地图软件打开之后 如果用户允许软件定位的话,那么打开软件后就会自动锁定到当前位置,如果用户手机移动那么当前位置也会跟随着变化。要实现这个功能需要使用Core Loaction中CLLocationManager类。 1. 定位的实际应用场景: 导航:去任意陌生的地方 周边:找餐馆、找酒店、找银行、找电影院等 2. 涉及技术...

anpan0842的博客 302

iOS CoreLocation定位服务

  CoreLocation导入框架 :#import <CoreLocation/CoreLocation.h>   需要了解的基本的属性和方法:   属性: 定位管理者:CLLocationManager 请求定位权限:requestAlwaysAuthorization 开始获取位置:startUpdatingLocation 停止获取位置:stop...

weixin_30492047的博客 121

iOS LBS CoreLocation定位,旋转角度,区域检测,地理编码,框架INTULocationManager使用

这里主要介绍CoreLocation的使用: 导入框架 导入主头文件 #import 当然导入头文件框架会自动导入 CoreLocation框架中所有数据类型的前缀都是CL CoreLocation中使用CLLocationManager对象来做用户定位 代码应用: #import "ViewController.h" #import @interface View

Corey_Jia 1870

LBS-Object C 定位,地图,导航

1.定位 CoreLocation: 用于地理定位 该框架中所有数据类型的前缀都是 CL 位置管理类 : CoreLocationManager Map Kit: 用于地图显示

amoslyc的博客 580

定位CoreLocation

一、定位 iOS三种定位方式: CoreLocation 按定位的准确性: GPS(Global Positioning System全球定位系统); 蜂窝式基站; wifi;定位顺序:1. 首选GPS: 1) 前提: 室内肯定不会用GPS2. wifi —> 最经济实惠的3. 基站GPS:优点: 定位最准确;缺点: 最费电; 最费流量;功能/内容:1. 单纯的定位 Co...

weixin_30265171的博客 123

iOS开发之使用系统库CoreLocation实现定位功能

首先,要在工程中引入静态库CoreLocation.framework 要实现地图、导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位操作。Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图开发要配合定位框架使用。在Core Location中主要包含了定位、地理编码(包括反编码)功能。。要实现这个功能需要使用Cor

MVP之小河的专栏 501

IOS中CoreLocation框架地理定位

1.CoreLocation框架使用前提: #import <CoreLocation/CoreLocation.h> CoreLocation框架中所有数据类型的前缀都是CL ,CoreLocation中使用CLLocationManager对象来做用户定位 2.CLLocationManager的常用操作: 开始用户定位 - (void)startUpdatingLocat...

weixin_30245867的博客 111

No1 CoreLocation实现地理定位

一 简介 在iOS开发中,实现定位和地图功能,必须基于2个框架进行开发CoreLocation :用于地理定位,地理编码,区域监听等(着重功能实现) MapKit :用于地图展示,例如大头针,路线、覆盖层展示等(着重界面展示) 2个热门专业术语LBS :Location Based Service SoLoMo :Social Local Mobile(索罗门) CoreLocation框架使用须知

IOS开发进阶之路 633

iOS开发获取用户位置及定位

转载自:http://www.cnblogs.com/wendingding/p/3901157.html    http://www.cnblogs.com/wendingding/p/3901230.html    http://www.cnblogs.com/wendingding/p/3901527.html iOS开发拓展篇—CoreLocation简单介绍

laofan_1123的博客 1万+
上一篇: 地图导航划线
下一篇: iOS8无法定位问题解决方案
杨小兵
博客等级 码龄14年 11粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值