LBS(定位)的使用

一、LBS(定位)的使用

1、使用框架Core Location

2、CLLocationManager

(1)CoreLocation中使用CLLocationManager对象来做用户定位

(2)CLLocationManager的常用操作

  <1>开始用户定位

  - (void)startUpdatingLocation;

  <2>停止用户定位

  - (void) stopUpdatingLocation;

  <3>当调用了startUpdatingLocation方法后,就开始不断地定位用户的位置,中途会频繁地调用代理的下面方法

  - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations;

  locations参数里面装着CLLocation对象

  <4> 判断当前定位是否可用,最好在使用前判断

  +locationServicesEnabled

(3)定位的精确度

  <1>@property(assign, nonatomic) CLLocationDistance distanceFilter;

  每隔多少米定位一次

  <2>@property(assign, nonatomic) CLLocationAccuracy desiredAccuracy;

  定位精确度(越精确就越耗电)

3、CLLocation

(1)CLLocation对象用来表示某个位置的地理信息,比如经纬度、海拔等等

(2)经纬度

  @property(readonly, nonatomic) CLLocationCoordinate2D coordinate;

(3)海拔

  @property(readonly, nonatomic) CLLocationDistance altitude;

(4)路线,航向(取值范围是0.0° ~ 359.9°,0.0°代表真北方向)

  @property(readonly, nonatomic) CLLocationDirection course;

(5)行走速度(单位是m/s)

  @property(readonly, nonatomic) CLLocationSpeed speed;

(6)计算两个位置间的距离

  - (CLLocationDistance)distanceFromLocation:(const CLLocation *)location

4、CLLocationCoordinate2D

(1)CLLocationCoordinate2D是一个用来表示经纬度的结构体

(2)定义如下:

  typedef struct {

        CLLocationDegrees latitude; // 纬度

      CLLocationDegrees longitude; // 经度

  } CLLocationCoordinate2D;

(3)一般用CLLocationCoordinate2DMake函数来创建CLLocationCoordinate2D

5、关于用户隐私

(1)从iOS 6开始,苹果在保护用户隐私方面做了很大的加强,很多操作都必须经过用户批准授权:

   <1>获得用户的位置  

  <2>访问用户的通讯录

  <3>日历

  <4>相机

  <5>相册

  <6>等等

(2)如何设置用户隐私

   <1>开发者可以在Info.plist中设置NSLocationUsageDescription说明定位的目的(Privacy - Location Usage Description)

   <2>  总是使用用户位置:NSLocationAlwaysUsageDescription

     使用应用时定位:NSLocationWhenInUseDescription

  

  <3> 不设置该字段,定位不能使用(至少设置其中之一,两个都设置,NSLocationAlwaysUsageDescription生效)

6、示例代码

#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>

@interface ViewController ()<CLLocationManagerDelegate>
@property (nonatomic, strong) CLLocationManager *manager;
@end
@implementation ViewController

- (CLLocationManager *)manager
{
    if (!_manager) {

    //1.创建一个定位管理器
        _manager =  [[CLLocationManager alloc]init];
    }

    return _manager;
}

- (void)viewDidLoad {
    [super viewDidLoad];

    //2.获取用户的授权
    [self.manager requestAlwaysAuthorization];

    //3.开始定位
    [self.manager startUpdatingLocation];

    //4.设置代理
    self.manager.delegate = self;

    //设置属性
    /*
     //导航专用的精确度
     extern const CLLocationAccuracy kCLLocationAccuracyBestForNavigation __OSX_AVAILABLE_STARTING(__MAC_10_7,__IPHONE_4_0);
     extern const CLLocationAccuracy kCLLocationAccuracyBest;
     extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters;
     extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters;
     extern const CLLocationAccuracy kCLLocationAccuracyKilometer;
     extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers;
    */
    //定位精确度
    self.manager.desiredAccuracy =  kCLLocationAccuracyBestForNavigation;

    //使用场景
    //求距离

    CLLocation *loc1 = [[CLLocation alloc]initWithLatitude:40 longitude:116];

    CLLocation *loc2 = [[CLLocation alloc]initWithLatitude:41 longitude:116];

    CLLocationDistance dis =  [loc1 distanceFromLocation:loc2];
    NSLog(@"%f",dis);

}

#pragma mark - CLLocationManagerDelegate
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
{

    //1.获取用户的位置
    CLLocation *location = [locations firstObject];

    CLLocationCoordinate2D coordinate =  location.coordinate;

    NSLog(@"%f ---- %f",coordinate.latitude,coordinate.longitude);

    NSLog(@"locations");
}

@end
时间: 2024-10-17 11:02:31

LBS(定位)的使用的相关文章

工作杂谈:LBS定位服务

大多数人都用过谷歌地图,百度地图等产品,但是很多人不知道LBS是什么,今天就来谈谈LBS. 一:概念 LBS位置服务(Location Based Services)又称定位服务,LBS是由移动通信网络和卫星定位系统结合在一起提供的一种增值业务,通过一组定位技术获得移动终端的位置信息(如经纬度坐标数据),提供给移动用户本人或他人以及通信系统,实现各种与位置相关的业务.实质上是一种概念较为宽泛的与空间位置有关的新型服务业务. 二:目标 1994年,美国学者Schilit首先提出了位置服务的三大目标

ReactNative快速开发厕所在哪App LBS 定位 框架封装

课程目录第一章 Nodejs服务开发1-1App功能演示.avi1-2 后台系统演示.avi 第二章 课程大纲和App演示2-1 简介.avi2-2 Node环境搭建.avi2-3 Express创建项目.avi2-4 服务接口设计.avi2-5 数据读取接口.mp42-6 数据存储接口.avi2-7 阅读模块配置接口.avi 第三章 Nodejs开发后台系统3-1 后台系统开发讲解.avi3-2 接口&后台开发总结.avi 第四章 React Native 环境搭建和入门4-1 React N

React Native快速开发 厕所在哪App LBS定位 框架封装

课程目录:第1章 课程大纲和App演示介绍整个课程的内容.业务架构.技术选型以及App的功能演示.第2章 Node.js服务开发介绍了Node.js环境搭建.JSON数据文件的读取以及开发了基础的服务接口.该接口主要提供客户端(含Native端和PC web端)调用,用于数据展示和数据存储.第3章 Node.js开发后台系统讲解了通过调用第二章的接口,开发简易的后台CMS系统.该CMS系统主要用于配置页面数据和存储列表数据.第4章 React Native环境搭建和入门主要讲解React Nat

LBS 与 GPS 定位之间的区别

什么是LBS定位? LBS英文全称为Location Based Services, 它包括两层含义:首先是确定移动设备或用户所在的地理位置:其次是提供与位置相关的各类信息服务.意指与定位相关的各类服务系统,简称"定位服务",另外一种叫法为MPS-Mobile Position Services, 也称为"移动定位服务"系统.如找到手机用户的当前地理位置,然后在上海市6340平方公里范围内寻找手机用户当前位置处1公里范围内的宾馆.影院.图书  LBS馆.加油站等的名

Android之仿ele地图定位效果

PS:最近项目要求,希望在选择地址的时候能够仿ele来实现定位效果.因此就去做了一下.不过ele使用高德地图实现的,我是用百度地图实现的.没办法,公司说用百度那就用百度的吧.个人觉得高德应该更加的精准.但也无所谓反正都是地图定位+Poi搜索.都差不多.   1.使用LocationClient核心类实现定位 2.使用GeoCoder实现地理编码和反地理编码 3.使用PoiSearch实现相关的Poi搜索 4.使用SuggestionSearch实现在线建议查询 5.ele定位效果的实现   百度

Android学习第十周_传感器和LBS

1.传感器的基本介绍 通过硬件的物理特性获取压力,重力,光感应,加速度等信息.主要应用于摇一摇等手机应用上面. 2.Android手机上常用的传感器 在android2.3 gingerbread系统中,google提供了传感器供应用层使用 SENSOR_TYPE_ACCELEROMETER 1 //加速度 SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力 SENSOR_TYPE_ORIENTATION 3 //方向 SENSOR_TYPE_GYROSCOPE 4 //陀螺仪

LBS和Gradle

LBS定位功能: 安卓系统提供----基于google map LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() { @Override public void onLocati

OC----GPS定位

首先新建一个空工程 2.在建一个继承与UIViewController的RootViewController 代码如下: //设置根视图管理器 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainSc

iOS 后台定位

http://www.cocoachina.com/ios/20150724/12735.html 前言 之前的文章说过 我现在做的是LBS定位的社交APP 其中主要的一个功能就是能够实时定位社交圈中各个成员的位置 后台实时上传位置则是非常重要的一个技术点 接下来就来说说我关于这方面的实践经验 需求 先来看看实现这个功能的具体需求是什么 由于我们是实时定位的生活类社交APP 所以我们需要做到一下几点 1. 如果用户的位置在持续变化 则隔一段时间上报一次 由于我们希望能够实时的将用户的位置变化反馈