iOS定位操作

IOS定位操作


简介

在IOS中通过CoreLocation定位,可以获取到用户当前位置,同时能得到装置移动信息。

实例步骤

1、创建一个简单的View based application(视图应用程序)。

2、择项目文件,然后选择目标,然后添加CoreLocation.framework,如下所示

CoreLocation_Library_Addition

3、在ViewController.xib中添加两个标签,创建ibOutlet名为latitudeLabel和longtitudeLabel的标签

4、现在通过选择 File-> New -> File… -> 选择Objective C class 并单击下一步

5、把sub class of作为NSObject,将类命名为LocationHandler

6、选择创建

7、更新LocationHandler.h,如下所示

#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>

@protocol LocationHandlerDelegate <NSObject>

@required
-(void) didUpdateToLocation:(CLLocation*)newLocation 
 fromLocation:(CLLocation*)oldLocation;
@end

@interface LocationHandler : NSObject<CLLocationManagerDelegate>
{
    CLLocationManager *locationManager;
}
@property(nonatomic,strong) id<LocationHandlerDelegate> delegate;

+(id)getSharedInstance;
-(void)startUpdating;
-(void) stopUpdating;

@end

8、更新LocationHandler.m,如下所示

#import "LocationHandler.h"
static LocationHandler *DefaultManager = nil;

@interface LocationHandler()

-(void)initiate;

@end

@implementation LocationHandler

+(id)getSharedInstance{
    if (!DefaultManager) {
        DefaultManager = [[self allocWithZone:NULL]init];
        [DefaultManager initiate];
    }
    return DefaultManager;
}
-(void)initiate{
    locationManager = [[CLLocationManager alloc]init];
    locationManager.delegate = self;
}

-(void)startUpdating{
    [locationManager startUpdatingLocation];
}

-(void) stopUpdating{
    [locationManager stopUpdatingLocation];
}
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:
 (CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
    if ([self.delegate respondsToSelector:@selector
    (didUpdateToLocation:fromLocation:)]) 
    {
        [self.delegate didUpdateToLocation:oldLocation 
        fromLocation:newLocation];

    }
}

@end

9、更新ViewController.h,如下所示

#import <UIKit/UIKit.h>
#import "LocationHandler.h"
@interface ViewController : UIViewController<LocationHandlerDelegate>
{
    IBOutlet UILabel *latitudeLabel;
    IBOutlet UILabel *longitudeLabel;
}
@end

10、更新ViewController.m,如下所示

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    [[LocationHandler getSharedInstance]setDelegate:self];
    [[LocationHandler getSharedInstance]startUpdating];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

-(void)didUpdateToLocation:(CLLocation *)newLocation 
 fromLocation:(CLLocation *)oldLocation{
    [latitudeLabel setText:[NSString stringWithFormat:
    @"Latitude: %f",newLocation.coordinate.latitude]];
    [longitudeLabel setText:[NSString stringWithFormat:
    @"Longitude: %f",newLocation.coordinate.longitude]];

}

@end

输出

当我们运行该应用程序,会得到如下的输出:

locationOutput

若文章对你有帮助,可以点赞或打赏支持我们。发布者:lyh会员,转载请注明出处:http://61.174.243.28:13541/AY-knowledg-hub/ios%e5%ae%9a%e4%bd%8d%e6%93%8d%e4%bd%9c-%e8%8f%9c%e9%b8%9f%e6%95%99%e7%a8%8b/

(0)
lyhlyh会员认证作者
上一篇 2023年 3月 30日 下午9:48
下一篇 2023年 4月 1日 下午8:22

相关推荐

  • 并发入门

    文章目录并发入门并发是什么?并行是什么?并行和并发有何区别?从技术上看并发和并行Go 对并发的支持 并发入门 上一节:第十九篇 接口二下一节:第二十一篇 协程 欢迎来到第 20 个…

    2023年 12月 5日
  • id

    文章目录id概要主要用途选项参数返回值例子注意 id 打印真实以及有效的用户和所在组的信息 概要 id [OPTION]… [USER]… 主要用途 没有选项时,打印指定用…

    入门教程 2023年 12月 19日
  • seinfo

    文章目录seinfo补充说明语法选项实例 seinfo 查询SELinux的策略提供多少相关规则 补充说明 seinfo命令 是用来查询SELinux的策略提供多少相关规则,一个主…

    入门教程 2024年 3月 4日
  • pidstat

    文章目录pidstat说明语法选项实例查看所有进程的CPU使用情况查看所有进程的内存使用情况查看所有进程的IO使用情况查看进程的上下文切换情况 pidstat 监控进程的系统资源占…

    入门教程 2024年 3月 1日
  • tar

    文章目录tar补充说明语法选项参数实例zip格式tar格式(该格式仅仅打包,不压缩)tar.gz格式tar.bz2格式tar.xz格式tar.Z格式(已过时)jar格式7z格式其它…

    入门教程 2024年 3月 11日
  • prtstat

    文章目录prtstat补充说明语法例子注意 prtstat 显示进程信息 补充说明 prtstat命令打印指定进程的统计信息。这个信息来自/proc/PID/stat文件。 语法 …

    入门教程 2024年 3月 1日
  • ftptop

    文章目录ftptop补充说明语法选项 ftptop proftpd服务器的连接状态 补充说明 ftptop命令 类似于top命令的显示风格显示proftpd服务器的连接状态。 语法…

    入门教程 2023年 12月 14日
  • date

    文章目录date概要主要用途参数选项返回值例子注意 date 显示或设置系统时间与日期 概要 date [OPTION]… [+FORMAT] date [-u|–utc|-…

    入门教程 2023年 12月 7日
  • chroot

    文章目录chroot补充说明语法选项参数实例 chroot 把根目录换成指定的目的目录 补充说明 chroot命令 用来在指定的根目录下运行指令。chroot,即 change r…

    入门教程 2023年 12月 7日
  • edquota

    文章目录edquota补充说明语法选项参数实例 edquota 用于编辑指定用户或工作组磁盘配额 补充说明 edquota命令 用于编辑指定用户或工作组磁盘配额。edquota预设…

    入门教程 2023年 12月 14日
Translate »