新普金娱乐网址


周鲁:“乾嘉”考证学,抑或“钱家”考证学

the Little Prince 小王子(一)

地理iOS 定位

  • 十月 24, 2018
  • 地理
  • 没有评论

率先,需要导入位置框架
#import <CoreLocation/CoreLocation.h>
职务主管,使用全局创建,否则无法启用置服务

  • self.locationManager = [[CLLocationManageralloc] init];

“道、法、术、器、势。”它们同整合了华夏古的管制思维体系。同时,它们又连无是一点一滴独立的,彼此交叉、相互融合、相互支撑。


号微信截图_15099682939128.png

特性介绍

“道”:规律、理念、信念
“法”:公开颂布的篇章法律和刑罚制度。
“术”是国王驾驭臣民、使的依于执政的政治权术。
“势”即权势,主要指君主的主政权力。
“器”,就是所利用的家伙与手腕。
申为明向,法以立本,术以立策,势以立人,器以成事。

//代理
@property(assign, nonatomic, nullable) id<CLLocationManagerDelegate> delegate;

//位置信息更新最小距离,只有移动大于这个距离才更新位置信息,默认为kCLDistanceFilterNone:不进行距离限制
@property(assign, nonatomic) CLLocationDistance distanceFilter;

/*
 定位精确度 
 kCLLocationAccuracyBestForNavigation 最适合导航
 kCLLocationAccuracyBest; 最精确定位
 kCLLocationAccuracyNearestTenMeters; 十米误差
 kCLLocationAccuracyHundredMeters; 百米误差
 kCLLocationAccuracyKilometer; 千米误差
 kCLLocationAccuracyThreeKilometers; 三千米误差 
 注:精确度越高越耗电,而且定位时间越长 
*/ 
@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;

经营与保管分别
经理解决之凡可行性、市场、战略当题材,衡量指标是“效益”。
管理解决之是员工的秩序、纪律、能力。衡量指标是“效率”。
营关注的凡盖客户呢着力,以市场需求为导向,练好外功。
治本关注之是坐人数吧遵循,以实现职工价值也导向,练好内功。

方介绍

任凭以及理关系.
“管”是主持和管控的意思理。“理”是理清和归集的意思。
“管”讲的是联系与交流。理讲的凡规范和次序。
管住的精粹是”理”不是“管”。”管”不是目的“理”才是追。
”管”不仅要服务被“理”,还要”服从“于理。

- (void)requestWhenInUseAuthorization  //请求前台定位授权,需要在info文件添加:NSLocationWhenInUseUsageDescription
- (void)requestAlwaysAuthorization  //请求前后台定位授权,需要在info文件添加:NSLocationAlwaysUsageDescription

注:这两个方法,当[CLLocationManager authorizationStatus] != kCLAuthorizationStatusNotDetermined(用户未决定)时无效;

商家微信截图_1509967411498.png

info文件定位信息.png

食堂管理受到之申:就是原理、模式。
1、探索商业模式
夜宵、街边店、特色火锅、流程简便、外出售团购、加盟连锁。
2、探索商业规律
方针的法则;市场的法则;行业之原理;地理的原理;习俗的规律;品类的规律;人性之法则。
3、根据原理定规划
分布经营框架,布管理框架,布经营框架而强调政策、市场、行业习俗、地理的原理。布管理框架而重视人性。
4、根据模式迟早目标
经理目标:营业收入;毛利率。
治本目标:成本费用;人均产值;员工流失率;服务产品质量投诉率。
重中之重:常德、深圳区域之营业收入直接处于持续下跌,规划用减员增效,控制成本费用,调整员工工资结构来阻击利润骤降。广州店整体运营收入趋于稳定,规划营业收入要在去年同期上升10%。

//开始定位追踪,开始定位后将按照用户设置的更新频率执行,方法返回定位信息
- (void)startUpdatingLocation 

/*
 显著位置变化定位服务(基站定位,要求手机有电话模块)当APP被完全关闭时,也可以接受到位置通知。
 并让APP进入后台处理,精度不大,所以耗电小,而且定位更新频率依据基站密度而定。
*/
- (void)startMonitoringSignificantLocationChanges

/*
 单次定位请求(9.0)
 按照精确度从低到高逐个进行定位,在有效时间内返回精确度最高的位置。
 不能与 startUpdatingLocation 一起使用。
 注:必须调用定位失败代理方法。
*/
- (void)requestLocation

- (void)stopUpdatingLocation  //停止定位追踪

- (void)startUpdatingHeading  //获取当前设备朝向(磁力计传感器)

//开始监听区域,只有用户进入或离开区域动作时才会调用对应代理方法
- (void)startMonitoringForRegion:(CLRegion *)region

- (void)requestStateForRegion:(CLRegion *)region  //请求指定区域状态

商家微信截图_15099679351253.png

代理方介绍

管住面临之模仿:制度、标准、流程。
未曾系统性管理制度的门店:问题无人报告,数据尚未人剖析;规律没有人总,经验没人累。制度尚未人晋升,检查没有人刮目相看。流程没人进化,标准尚未人迭代。
1、建制度
市场调查制度;收货验收制度;财务报销制度;晋级提拔制度;员工培训制度;员工考核制度;管理会议制度;员工大会制度;卫生整洁制度;安全生产制度;工作计划制度;工作报告制度。
2、立标准
原材料验收标准;费用报销标准;奖金分配标准;会议管理专业;六时时管理专业;汇报总结标准。

#pragma mark - <CLLocationManagerDelegate>

/** 获取到位置信息时调用 */
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations {

    //按时间排序,如果想要拿到最新的位置,直接拿最后一个
    CLLocation *location = locations.lastObject;

    location.coordinate;  //经纬度
    location.altitude; //海拔
    location.horizontalAccuracy;  //如果是负值,代表当前位置数据不可用
    location.verticalAccuracy; //如果是负值,代表当前海拔数据不可用
    location.course; //航向(0.0-359.9)
    location.speed; //速度
    location.floor; //楼层

    //两个地点之间的横向距离
    - (CLLocationDistance)distanceFromLocation:(const CLLocation *)location
}


/** 改变授权状态时激发 */
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {

   /* 
    授权状态
    kCLAuthorizationStatusNotDetermined = 0,  用户未决定            
    kCLAuthorizationStatusRestricted, 受限制 
    kCLAuthorizationStatusDenied, 被拒绝
    kCLAuthorizationStatusAuthorizedAlways 前后台定位授权
    kCLAuthorizationStatusAuthorizedWhenInUse 前台定位授权 
   */

    //判断当前设备是否支持定位,是否已经开启定位服务
    if (status == kCLAuthorizationStatusDenied && ![CLLocationManager locationServicesEnabled]) {
        NSLog(@"定位服务未开启");
    }else if (status == kCLAuthorizationStatusDenied) {
        NSLog(@"用户拒绝");

    //提醒用户授权,通过方法直接达到设置界面
    NSURL *settingsURL = [NSURL URLWithString:UIApplicationOpenSettingsURLString];

     if ([[UIApplication sharedApplication] openURL:settingsURL]) {
          [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
     }
   }
}

3、建流程
门店店长工作流程,前厅管理工作流程,后厨管理工作流程,人事工作流程,收货验收工作流程,前厅服务工作流程,后厨生产工作流程。
首要:没有系统性管理制度的门店,像相同本无回的天书
打不清头尾,摸不到头花絮。

APP授权状态.png

店铺微信截图_15099682108104.png

/** 获取到设备朝向时激发 */
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading */*当前设备朝向*/)newHeading {

    newHeading.magneticHeading; //距离磁北方向角度
    newHeading.trueHeading; //距离真北方向角度
    newHeading.headingAccuracy; //如果是负值,代表角度无效
}


/** 进入指定区域时激发 */
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region


/** 离开指定区域时激发 */
- (void)locationManager:(CLLocationManager *)manager didExitRegion:(nonnull CLRegion *)region


/* 
 请求指定区域的状态时激发,不仅可以获取指定区域状态,而且位置发生变化时,也会调用对应的代理方法.
 也就是说,这个方法同时监听 didEnterRegion 和 didExitRegion 两种状态. 
*/
- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region


/** 定位失败时激发 */
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error

治本中之技艺:管理模式、技巧、能力。
1、启动财务分析会,班前会,员工大会,员工培训会,周管理会。
2、执行原材料到货检查,由专人负责验收,对于规范、质量不达标的原料坚决退货,控制原料的进货价格,对匪合格的供货商一律撤销合作。
3、检查口对准备干活,收市工作进行申报(要求:任务划分到人口,责任落实到人)。店长汇报五码评比结果,经理反映服务与菜品质量状况。
4、实行人事培训、部门培训活动,开展人事不定期健康检查工作,检查中窥见题目,追踪问题,整改及合格了(水印相机照取证)。
5、员工进行五件评比,与员工签订绩效考核承诺书,采取末位淘汰制,对于无服帖管理,不遵从规章制度的职工进行劝阻。
6、干部进行六件考核,月度工作报告总结,提交有时间节点的行事计划,对于非称职的长官一律降职使用还是进行劝阻。
7、完成营业目标后,执行员工和老干部绩效奖金分配方案,完成卡券营销任务后,执行卡券营销奖金分配方案。
8、开展月卫生考评,评选优秀员工,优秀领导,优秀集体,优秀门店,开展消费者点赞打赏活动。
9、开展全员学管理活动,学习德鲁克的管制秘诀,采取有声书结合案例教学的模式,学习了对象管理,自我管理、人才管理,团队管理。

例子1
打印当前用户之走方向,偏离角度与相应的行距离
例如:北偏东30度方向,移动了8米。

商厦微信截图_15099682321053.png

#pragma mark - <CLLocationManagerDelegate>

/** 获取到位置信息时调用 */
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations {

    //按时间排序,如果想要拿到最新的位置,直接拿最后一个
    CLLocation *location = locations.lastObject;

    if (location.horizontalAccuracy < 0) return;

    //确定当前航向
    NSInteger index = (int)location.course / 90;
    NSArray *courses = @[@"北偏东", @"东偏南", @"南偏西", @"西偏北"];
    NSString *course = courses[index];

    //确定当前偏离角度
    NSInteger angle = (int)location.course % 90;

    //确定行走距离
    CGFloat distance = 0;

    if (_lastLocation) {
        distance = [location distanceFromLocation:_lastLocation];
    }else {
        _lastLocation = location;
    }

    if (angle == 0) {
        course = [@"正" stringByAppendingString:[course substringToIndex:1]];    //正方向
        NSLog(@"%@", [NSString stringWithFormat:@"%@ 方向,移动了 %f 米", course, distance]);
    }else {
        NSLog(@"%@", [NSString stringWithFormat:@"%@ %ld 度方向,移动了 %f 米", course, angle, distance]);
    }
}

管住中的“器”:器是领导者的管理工具、软件。
1、办公软件:“Word”;“Excel”;“PPT”;“思维导图”。
2、管理软件:“志杰”;“美团”;“美团外卖”;企业微信”;“TAPD”。
3、管理工具:电脑、POS机、税控机、激光打印机、指纹打卡机。

例子2 指南针

柜微信截图_15099682602263.png

#pragma mark - <CLLocationManagerDelegate>

/** 获取到设备朝向时激发 */
- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:(CLHeading *)newHeading {

    if (newHeading.headingAccuracy < 0) return;

    //获取设备朝向(角度)
    CLLocationDirection angle = newHeading.magneticHeading;

    float radius = angle / 180.0 * M_PI;    //角度转弧度

    [UIView animateWithDuration:.35 animations:^{
        _compassView.transform = CGAffineTransformMakeRotation(-radius);
    }];
}

管制着之地貌:“道、法、术、器”的以中产生的大和势能。
1、顺势就是考察于物的本来面目。
2、借势就是着眼于外力的作用。
3、造势就是观测于力的发表
4、强势是高于、实力资源的对弈。

事例3 区域监听

结语:
管理者要充分利用管理着的申、法、术、器、势,当起起系统化的管住流程后,管理才会不负众望人活动规章在,人活动制度留。只有充分执行好位规章制度,规章制度才发出或以经营管理过程被持续晋升迭代。最后才能够打造出集团优势,企业势能和管理者权威。

- (void)viewDidLoad {
    [super viewDidLoad];

    self.locationManager = [[CLLocationManager alloc] init];
    _locationManager.delegate = self;

    //判断当前设备是否支持区域监听
    if (![CLLocationManager isMonitoringAvailableForClass:[CLCircularRegion class]]) return;

    [_locationManager requestAlwaysAuthorization];  //区域监听需要请求用户授权定位信息

    //创建区域中心(经纬度)
    CLLocationCoordinate2D center = CLLocationCoordinate2DMake(20.025, 110.319);

    //设置区域半径
    CLLocationDistance distance = 1000;

    if (distance > _locationManager.maximumRegionMonitoringDistance) {
        distance = _locationManager.maximumRegionMonitoringDistance;    //最大监听范围
    }

    //创建一个区域,identifier 区域唯一标识符
    CLCircularRegion *region = [[CLCircularRegion alloc] initWithCenter:center radius:distance identifier:@"嘉陵国际大厦"];

    //请求指定区域状态
    [_locationManager requestStateForRegion:region];
}


#pragma mark - <CLLocationManagerDelegate>

/** 当前请求指定区域状态时激发 */
- (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region {

    /*
     state  状态
     CLRegionStateUnknown,  不知道
     CLRegionStateInside,   区域内
     CLRegionStateOutside   区域外
     */

    if (state == CLRegionStateInside) {
        NSLog(@"进入 %@ 区域", region.identifier);
    }else if (state == CLRegionStateOutside) {
        NSLog(@"离开 %@ 区域", region.identifier);
    }
}

事例5 地理编码和倒地理编码

地理编码-反地理编码.png

_geocoder = [[CLGeocoder alloc] init];  //viewDidLoad代码

/** 地理编码(地址转经纬度)*/
- (IBAction)geoCode:(id)sender {

    [_geocoder geocodeAddressString:_addressTV.text completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {


        if (placemarks.count) {

            //placemarks 按相关性进行排序
            CLPlacemark *placemark = placemarks.firstObject;

            _addressTV.text = placemark.name;
            _latitudeTF.text = @(placemark.location.coordinate.latitude).stringValue;
            _longitudeTF.text = @(placemark.location.coordinate.longitude).stringValue;

            placemark.location;    //位置信息
            placemark.addressDictionary;    //地址的详情
            placemark.name; //地址名称
            placemark.ISOcountryCode;   //国家代码
            placemark.country;  //国家
            placemark.postalCode;   //地址邮编
            placemark.administrativeArea;   //行政区域
            placemark.subAdministrativeArea;    //次级行政区域
            placemark.locality; //城市名
            placemark.subLocality;  //下一级城市名
            placemark.thoroughfare; //道路名
            placemark.subThoroughfare;  //下一级道路名
        }
    }];
}


/** 反地理编码(经纬度转地址)*/
- (IBAction)reverseGeoCode:(id)sender {

    CLLocation *location = [[CLLocation alloc] initWithLatitude:_latitudeTF.text.floatValue longitude:_longitudeTF.text.floatValue];

    [_geocoder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {

        if (placemarks.count) {

            //placemarks 按相关性进行排序
            CLPlacemark *placemark = placemarks.firstObject;

            _addressTV.text = placemark.name;
        }
    }];
}


- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    [self.view endEditing:YES];
}

封装 代理转block模式

.h

#import <Foundation/Foundation.h>
#import "Singleton.h"  //这是一个实现单例宏的头文件,在我的文章里面可以找到
#import <CoreLocation/CoreLocation.h>

typedef void(^ResultBlock)(CLLocation *location, CLPlacemark *placemark, NSString *error);

@interface MNLLocationTool : NSObject

single_interface(MNLLocationTool);

/** 获取当前位置 */
- (void)getCurrentLocation:(ResultBlock)block;

@end

.m

#import "MNLLocationTool.h"
#import <UIKit/UIKit.h>

#define isIOS(version) ([UIDevice currentDevice].systemVersion.floatValue >= version)

@interface MNLLocationTool ()<CLLocationManagerDelegate>

/** 记录要执行的代码块 */
@property (nonatomic, copy) ResultBlock block;
/** 位置管理者 */
@property (nonatomic, strong) CLLocationManager *locationManger;
/** 地理编码器 */
@property (nonatomic, strong) CLGeocoder *geocoder;

@end

@implementation MNLLocationTool

single_implementation(MNLLocationTool);  //声明单例方法

- (CLLocationManager *)locationManger {
    if (!_locationManger) {
        _locationManger = [[CLLocationManager alloc] init];
        _locationManger.delegate = self;

        if (isIOS(8.0)) {

            NSDictionary *infoDic = [NSBundle mainBundle].infoDictionary;
            //判断用户填写了哪个授权信息
            if (infoDic[@"NSLocationAlwaysUsageDescription"]) {
                [_locationManger requestAlwaysAuthorization];
            }else if (infoDic[@"NSLocationWhenInUseUsageDescription"]) {
                [_locationManger requestWhenInUseAuthorization];
            }else {
                NSLog(@"错误!如果在iOS8.0之后定位,必须在info.plist配置NSLocationAlwaysUsageDescription或 NSLocationWhenInUseUsageDescription Key!");
            }
        }
    }
    return _locationManger;
}

- (CLGeocoder *)geocoder {
    if (!_geocoder) {
        _geocoder = [[CLGeocoder alloc] init];
    }
    return _geocoder;
}


- (void)getCurrentLocation:(ResultBlock)block {

    self.block = block;

    //定位服务是否开启
    if ([CLLocationManager locationServicesEnabled]) {
        [self.locationManger startUpdatingLocation];
    }else {
        self.block(nil, nil, @"定位服务没有开启");
    }
}


- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations {

    CLLocation *location = locations.lastObject;

    if (location.horizontalAccuracy < 0) return;

    [self.geocoder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {

        //在此处回调之前存起来的block
        if (placemarks.count) {
            CLPlacemark *placemaek = placemarks.firstObject;
            self.block(location, placemaek, nil); 
        }else {
            self.block(location, nil, error.localizedDescription/*错误信息*/);
        }
    }];
}

@end

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图