前端 unity

U3D C#调用 Object-c方法,开始定位,获取到位置抛送unity事件给C#端 停止

IOS组件需要 CLLocationManager

XCode info里加个

1.Privacy - Location When In Use Usage Description -> 是否允许此App在使用期间访问你的位置?
2.Privacy - Location Always Usage Description -> 是否允许此App永久访问你的位置?(这个不建议使用)

需要两个文件

IOS_LocationController.h

//
//  IOS_LocationController.h
//  Unity-iPhone
//
//  Created by hoolai on 2018/11/27.
////#ifndef IOS_LocationController_h
//#define IOS_LocationController_h
#import <CoreLocation/CoreLocation.h>
@interface IOS_LocationController : UIViewController<CLLocationManagerDelegate>//location代理继承
@property (nonatomic,strong) CLLocationManager *locationManager;
@end//#endif /* IOS_LocationController_h */

IOS_LocationController.m

//
//  IOS_LocationController.m
//  Unity-iPhone
//
//  Created by hoolai on 2018/11/27.
//#import "IOS_LocationController.h"
#import <CoreLocation/CoreLocation.h>@implementation IOS_LocationController
- (void)createLocationManager{self.locationManager = [[CLLocationManager alloc] init];self.locationManager.delegate = self;//    [self.locationManager requestAlwaysAuthorization];[self.locationManager requestWhenInUseAuthorization];//获取访问权限。可以在info.plist里面填写给用户的请求信息// 设置定位精度// kCLLocationAccuracyNearestTenMeters:精度10米// kCLLocationAccuracyHundredMeters:精度100 米// kCLLocationAccuracyKilometer:精度1000 米// kCLLocationAccuracyThreeKilometers:精度3000米// kCLLocationAccuracyBest:设备使用电池供电时候最高的精度// kCLLocationAccuracyBestForNavigation:导航情况下最高精度,一般要有外接电源时才能使用self.locationManager.desiredAccuracy = kCLLocationAccuracyKilometer;// distanceFilter是距离过滤器,为了减少对定位装置的轮询次数,位置的改变不会每次都去通知委托,而是在移动了足够的距离时才通知委托程序self.locationManager.distanceFilter = kCLDistanceFilterNone; // 如果设为kCLDistanceFilterNone,则每秒更新一次;
}
-(void)startLocation
{[self createLocationManager];[self.locationManager startUpdatingLocation];//开始定位
}
#pragma mark - CLLocationManagerDelegate
// 地理位置发生改变时触发
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{// 获取经纬度NSLog(@"纬度:%f",newLocation.coordinate.latitude);NSLog(@"经度:%f",newLocation.coordinate.longitude);// 停止位置更新[manager stopUpdatingLocation];//根据经纬度获取省份城市CLGeocoder *clGeoCoder = [[CLGeocoder alloc] init];[clGeoCoder reverseGeocodeLocation:newLocation completionHandler: ^(NSArray *placemarks,NSError *error) {for (CLPlacemark *placeMark in placemarks){NSDictionary *addressDic=placeMark.addressDictionary;//地址的所有信息NSString *state=[addressDic objectForKey:@"State"];//省。直辖市  江西省NSString *city=[addressDic objectForKey:@"City"];//市  丰城市NSString *subLocality=[addressDic objectForKey:@"SubLocality"];//区//            NSString *street=[addressDic objectForKey:@"Street"];//街道NSLog(@"%@=====%@-----%@=====%@",addressDic,state,city,subLocality);NSString *st=@"";st = [NSString stringWithFormat:@"%@,%@,%@", state, city ,subLocality];const char *pConstChar;pConstChar = [st UTF8String];//UnitySendMessage 是用来给unity发消息的  有三个参数 1.挂载对应回调脚本的物体名 2.回调函数的名称 3.对应回调上的参数UnitySendMessage("Root", "locationOK", pConstChar);break;}}];}// 定位失误时触发
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error
{NSLog(@"error:%@----%ld",error,(long)[error code]);UnitySendMessage("Root", "locationOK", "null");if ([error code] == 1) {//没有位置访问权限}
}
@end
#if defined(__cplusplus)
extern "C" {
#endifIOS_LocationController *app ;//导出接口供unity使用void IOS_Location(){app = [[IOS_LocationController alloc]init];[app startLocation];}
#if defined(__cplusplus)
}
#endif

IOS 定位 CLLocationManager相关推荐

  1. ios无法定位CLLocationManager Delegate方法不能被调用的问题

    最近使用ios定位功能,但是总是定位不成功,不能获取定位数据,找了好久原因,终于发现问题所在,原来是ios8之前的规则已经不适用了. 先从ios developer library 中找到相关的说明. ...

  2. IOS定位核心与地图

    本文转载至:http://www.cnblogs.com/xinye/archive/2013/06/13/3134746.html IOS定位核心与地图                 Core L ...

  3. iOS 定位和地图

    iOS中有三个定位服务组件: Wifi定位,通过查询一个Wifi路由器的地理位置的信息.比较省电,iPod touch和iPad也可以采用. 蜂窝基站定位,通过移动运用商基站定位.也适合有3G版本的i ...

  4. 高德sdk定位当前位置_单次定位-获取位置-开发指南-iOS 定位SDK | 高德地图API

    iOS定位SDK提供的单次定位方法基于苹果定位核心,苹果定位核心会在设备移动时连续返回定位结果,高德在此基础上封装了单次定位.当设备可以正常联网时,还可以返回该定位点的对应的中国境内位置信息(包括:省 ...

  5. ios 持续获取定位 高德地图_概述-iOS 定位SDK | 高德地图API

    简介 高德 iOS 定位 SDK 提供了不依赖于地图定位的定位功能,开发者可以无地图显示的场景中便捷地为应用程序添加定位功能. iOS定位SDK提供了单次定位.连续定位.逆地理信息.地理围栏等功能. ...

  6. ios 高德获取定位_单次定位-获取位置-开发指南-iOS 定位SDK | 高德地图API

    iOS定位SDK提供的单次定位方法基于苹果定位核心,苹果定位核心会在设备移动时连续返回定位结果,高德在此基础上封装了单次定位.当设备可以正常联网时,还可以返回该定位点的对应的中国境内位置信息(包括:省 ...

  7. ios 高德获取定位_更新日志-iOS 定位SDK | 高德地图API

    高德地图iOS 定位 SDK V2.6.7            2020-08-28 1.适配iOS14定位权限:新增"模糊定位"权限下的兼容策略: 2.修复bug,提升性能和稳 ...

  8. ios 高德获取定位_概述-iOS 定位SDK | 高德地图API

    简介 高德 iOS 定位 SDK 提供了不依赖于地图定位的定位功能,开发者可以无地图显示的场景中便捷地为应用程序添加定位功能. iOS定位SDK提供了单次定位.连续定位.逆地理信息.地理围栏等功能. ...

  9. iOS定位原理以及纠偏的一些建议

    介绍之前,先声明一下关于地图加加的"偏移修正"功能,地图加加可以对齐中国地区(地点.线路和照片的)坐标和中国地图之间的偏移,这个是我国测绘法规要求的一个数学意义的偏移,每个地方的偏 ...

最新文章

  1. 命名实体识别新SOTA:改进Transformer模型
  2. 【Android 应用开发】分析各种Android设备屏幕分辨率与适配 - 使用大量真实安卓设备采集真实数据统计
  3. php中round函数能给整数用吗,PHP四舍五入、取整、round函数使用
  4. include *.h 和 declare class *; 的区别?
  5. 标注工具——VoTT的调试笔记
  6. 安徽工程大学专升本计算机科学与技术专业,2015年安徽工程大学机电学院的计算机科学与技术专业怎么样...
  7. php原生判断,JavaScript
  8. 【机械仿真】基于matlab GUI 汽车悬架(钢板弹簧+减震器)设计【含Matlab源码 1631期】
  9. Zabbix Server 5.2安装教程
  10. win10关机后cpu风扇还在转_win10电脑关机后风扇还在一直转怎么修复
  11. 视频异常事件检测Object-centric Auto-encoders and Dummy Anomalies for Abnormal Event Detection in Video
  12. Python:过程型考核
  13. 专题:手把手学习硬件基础------8、驱动电路
  14. win10共享计算机win7,Win7系统和win10系统设置共享打印机的方法
  15. MATLAB强化学习-appdesigner使用
  16. linux计划任务1
  17. 阿里云域名解析,将域名绑定到指定服务器
  18. 【游戏引擎Easy2D】一篇打通引擎进阶类型,Keycode+MouseCode+Image
  19. Eclipse 出现 Failed to Download Index 提示框
  20. 【技术工坊39期】去中心化钱包和中心化钱包的开发框架和实现

热门文章

  1. 2021年质量员-设备方向-通用基础(质量员)考试总结及质量员-设备方向-通用基础(质量员)模拟考试题库
  2. ArkUI开发趣味体验,快来抽取限量HarmonyOS专属头像!
  3. 俄罗斯黑产界淘宝运营人被美国抓捕,靠收租进账千万美元
  4. 根据url批量下载图片
  5. orz正在流行的符号---失意体前躯
  6. 翻遍“微信小程序”的所有知乎问答,我们整理了大家最关注几个话题
  7. 令人心酸至极的100个微瞬间
  8. 第四天(打造离线下载服务器)
  9. 10019---CSS Grouping Selectors(分组和嵌套)
  10. 恭喜!公积金将按月提取!12月31日前,全面执行!