13434477580用户微信所在位置如何自创置

智能手机教程子分类转载自:/wendingding/p/3901157.html
& &/wendingding/p/3901230.html
& &/wendingding/p/3901527.html
iOS开发拓展篇—CoreLocation简单介绍
1.在移动互联网时代,移动app能解决用户的很多生活琐事,比如
(1)导航:去任意陌生的地方
(2)周边:找餐馆、找酒店、找银行、找电影院
2.在上述应用中,都用到了地图和定位功能,在iOS开发中,要想加入这2大功能,必须基于2个框架进行开发
(1)Map Kit&:用于地图展示
(2)Core Location&:用于地理定位
3.两个热门专业术语
(1)LBS&:Location Based Service(基于定位的服务)
(2)SoLoMo :Social Local Mobile(索罗门)
二、CoreLocation框架的使用
1.CoreLocation框架使用前提
(1)导入框架
说明:在Xcode5以后,不再需要我们手动导入
(2)导入主头文件
  #import &CoreLocation/CoreLocation.h&
2.CoreLocation框架使用须知
CoreLocation框架中所有数据类型的前缀都是CL
CoreLocation中使用CLLocationManager对象来做用户定位
三、经纬度等地理信息扫盲
2.本初子午线:穿过英国伦敦格林文治天文台
往东边(右边)走,是东经(E)
往西边(左边)走,是西经(W)
东西经各180°,总共360°
3.赤道:零度维度
往北边(上边)走,是北纬(N)
往南边(下边)走,是南纬(S)
南北纬各90°,总共180°
提示:横跨经度\纬度越大(1° ≈ 111km),表示的范围就越大,在地图上看到的东西就越小
4.我国的经纬度:
(1)中国的经纬度范围
纬度范围:N 3°51′ ~& N 53°33′
经度范围:E 73°33′ ~& E 135°05′
(2)部分城市的经纬度
四、模拟位置
说明:在对程序进行测试的时候,设置手机模拟器的模拟位置(经纬度)
iOS开发拓展篇—CoreLocation定位服务
一、简单说明
1.CLLocationManager
CLLocationManager的常用操作和属性
开始用户定位- (void)startUpdatingL
停止用户定位- (void) stopUpdatingL
说明:当调用了startUpdatingLocation方法后,就开始不断地定位用户的位置,中途会频繁地调用代理的下面方法
  -&(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)
每隔多少米定位一次
  @property(assign, nonatomic) CLLocationDistance distanceF
定位精确度(越精确就越耗电)
  @property(assign, nonatomic) CLLocationAccuracy desiredA
2.CLLocation
CLLocation用来表示某个位置的地理信息,比如经纬度、海拔等等
(1)经纬度&
  @property(readonly, nonatomic) CLLocationCoordinate2D
(2)海拔&
  @property(readonly, nonatomic) CLLocationD
(3)路线,航向(取值范围是0.0° ~ 359.9°,0.0°代表真北方向)
  @property(readonly, nonatomic) CLLocationD
(4)行走速度(单位是m/s)
  &@property(readonly, nonatomic) CLLocationS
(5)计算2个位置之间的距离
  - (CLLocationDistance)distanceFromLocation:(const CLLocation *)location方法
3.CLLocationCoordinate2D
CLLocationCoordinate2D是一个用来表示经纬度的结构体,定义如下
typedef struct {
& & & & CLLocationD // 纬度
& & & & CLLocationD // 经度
} CLLocationCoordinate2D;
一般用CLLocationCoordinate2DMake函数来创建CLLocationCoordinate2D
二、代码示例
YYViewController.m
18-定位服务
Created by apple on 14-8-9.
Copyright (c) 2014年 yangyong. All rights reserved.
9 #import &YYViewController.h&
10 #import &CoreLocation/CoreLocation.h&
12 //需要遵守CLLocationManagerDelegate协议
13 @interface YYViewController ()&CLLocationManagerDelegate&
14 @property(nonatomic,strong)CLLocationManager *locM
17 @implementation YYViewController
18 #pragma mark-懒加载
19 -(CLLocationManager *)locMgr
if (_locMgr==nil) {
//1.创建位置管理器(定位用户的位置)
self.locMgr=[[CLLocationManager alloc]init];
//2.设置代理
self.locMgr.delegate=
return _locM
29 - (void)viewDidLoad
[super viewDidLoad];
//判断用户定位服务是否开启
if ([CLLocationManager locationServicesEnabled]) {
//开始定位用户的位置
[self.locMgr startUpdatingLocation];
//每隔多少米定位一次(这里的设置为任何的移动)
self.locMgr.distanceFilter=kCLDistanceFilterN
//设置定位的精准度,一般精准度越高,越耗电(这里设置为精准度最高的,适用于导航应用)
self.locMgr.desiredAccuracy=kCLLocationAccuracyBestForN
{//不能定位用户的位置
//1.提醒用户检查当前的网络状况
//2.提醒用户打开定位开关
//测试方法,计算两个位置之间的距离
[self countDistance];
51 #pragma mark-CLLocationManagerDelegate
当定位到用户的位置时,就会调用(调用的频率比较频繁)
55 -(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations
//locations数组里边存放的是CLLocation对象,一个CLLocation对象就代表着一个位置
CLLocation *loc = [locations firstObject];
//维度:loc.coordinate.latitude
//经度:loc.coordinate.longitude
NSLog(@&纬度=%f,经度=%f&,loc.coordinate.latitude,loc.coordinate.longitude);
NSLog(@&%d&,locations.count);
//停止更新位置(如果定位服务不需要实时更新的话,那么应该停止位置的更新)
[self.locMgr stopUpdatingLocation];
70 //计算两个位置之间的距离
71 -(void)countDistance
//根据经纬度创建两个位置对象
CLLocation *loc1=[[CLLocation alloc]initWithLatitude:40 longitude:116];
CLLocation *loc2=[[CLLocation alloc]initWithLatitude:41 longitude:116];
//计算两个位置之间的距离
CLLocationDistance distance=[loc1 distanceFromLocation:loc2];
NSLog(@&(%@)和(%@)的距离=%fM&,loc1,loc2,distance);
打印查看:
代码说明:
1.关于代理方法
  需要设置代理,通过代理告诉用户当前的位置,有两个代理方法:
  locations参数里面装着CLLocation对象
其中后者是一个过期的方法,在新的方法(第一个)中使用了一个数组来替代。
说明:该方法在当定位到用户的位置时就会调用,调用比较频繁
注意:不要使用局部变量(创建位置管理器),因为局部变量的方法结束它就被销毁了。建议使用一个全局的变量,且只创建一次就可以了(使用懒加载)。
2.定位的精度
3.如果发现自己的定位服务没有打开,那么应该提醒用户打开定位服务功能。
4.定位服务是比较耗电的,如果是做定位服务(没必要实时更新的话),那么定位了用户位置后,应该停止更新位置。
三、用户隐私的保护
1.权限设置说明
从iOS 6开始,苹果在保护用户隐私方面做了很大的加强,以下操作都必须经过用户批准授权
(1)要想获得用户的位置
(2)想访问用户的通讯录、日历、相机、相册等
当想访问用户的隐私信息时,系统会自动弹出一个对话框让用户授权
注意:一旦用户选择了“Don’t Allow”,意味着你的应用以后就无法使用定位功能,且当用户第一次选择了之后,以后就再也不会提醒进行设置。
因此在程序中应该进行判断,如果发现自己的定位服务没有打开,那么应该提醒用户打开定位服务功能。
CLLocationManager有个类方法可以判断当前应用的定位功能是否可用+ (BOOL)locationServicesE
  常用的方法:截图告诉用户,应该怎么打开授权
2.开发者可以在Info.plist中设置NSLocationUsageDescription说明定位的目的(Privacy - Location Usage Description)
说明:这里的定位服务是基于网络的。通常定位服务可以是基于GPS、基站或者是网络的。
iOS开发拓展篇—CoreLocation地理编码
一、简单说明
CLGeocoder:地理编码器,其中Geo是地理的英文单词Geography的简写。
1.使用CLGeocoder可以完成“地理编码”和“反地理编码”
地理编码:根据给定的地名,获得具体的位置信息(比如经纬度、地址的全称等)
反地理编码:根据给定的经纬度,获得具体的位置信息
(1)地理编码方法
  - (void)geocodeAddressString:(NSString *)addressString completionHandler:(CLGeocodeCompletionHandler)completionH&
(2)反地理编码方法
  - (void)reverseGeocodeLocation:(CLLocation *)location completionHandler:(CLGeocodeCompletionHandler)completionH
2.CLGeocodeCompletionHandler
  当地理\反地理编码完成时,就会调用CLGeocodeCompletionHandler
这个block传递2个参数
error&:当编码出错时(比如编码不出具体的信息)有值
placemarks&:里面装着CLPlacemark对象
3.CLPlacemark
说明:CLPlacemark的字面意思是地标,封装详细的地址位置信息
地理位置&    @property (nonatomic, readonly) CLLocation *  
区域      &@property (nonatomic, readonly) CLRegion *
详细的地址信息&&&@property (nonatomic, readonly) NSDictionary *addressD
地址名称    @property (nonatomic, readonly) NSString *
城市      @property (nonatomic, readonly) NSString *
二、代码示例:
在storyboard中搭建界面如下:
实现代码:
  YYViewController.m文件
YYViewController.m
19-地理编码
Created by apple on 14-8-11.
Copyright (c) 2014年 yangyong. All rights reserved.
9 #import &YYViewController.h&
10 #import &CoreLocation/CoreLocation.h&
12 @interface YYViewController ()
13 @property(nonatomic,strong)CLGeocoder *
14 #pragma mark-地理编码
15 - (IBAction)
16 @property (weak, nonatomic) IBOutlet UITextField *addressF
17 @property (weak, nonatomic) IBOutlet UILabel *longitudeL
18 @property (weak, nonatomic) IBOutlet UILabel *latitudeL
19 @property (weak, nonatomic) IBOutlet UILabel *detailAddressL
21 #pragma mark-反地理编码
23 - (IBAction)reverseG
24 @property (weak, nonatomic) IBOutlet UITextField *longitudeF
25 @property (weak, nonatomic) IBOutlet UITextField *latitudeF
26 @property (weak, nonatomic) IBOutlet UILabel *reverdeDetailAddressL
29 @implementation YYViewController
31 #pragma mark-懒加载
32 -(CLGeocoder *)geocoder
if (_geocoder==nil) {
_geocoder=[[CLGeocoder alloc]init];
39 - (void)viewDidLoad
[super viewDidLoad];
地理编码:地名—&经纬度坐标
46 - (IBAction)geocode {
//1.获得输入的地址
NSString *address=self.addressField.
if (address.length==0) return;
//2.开始地理编码
//说明:调用下面的方法开始编码,不管编码是成功还是失败都会调用block中的方法
[self.geocoder geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error) {
//如果有错误信息,或者是数组中获取的地名元素数量为0,那么说明没有找到
if (error || placemarks.count==0) {
self.detailAddressLabel.text=@&你输入的地址没找到,可能在月球上&;
编码成功,找到了具体的位置信息
//打印查看找到的所有的位置信息
locality:城市
country:国家
postalCode:邮政编码
for (CLPlacemark *placemark in placemarks) {
NSLog(@&name=%@ locality=%@ country=%@ postalCode=%@&,placemark.name,placemark.locality,placemark.country,placemark.postalCode);
//取出获取的地理信息数组中的第一个显示在界面上
CLPlacemark *firstPlacemark=[placemarks firstObject];
//详细地址名称
self.detailAddressLabel.text=firstPlacemark.
CLLocationDegrees latitude=firstPlacemark.location.coordinate.
CLLocationDegrees longitude=firstPlacemark.location.coordinate.
self.latitudeLabel.text=[NSString stringWithFormat:@&%.2f&,latitude];
self.longitudeLabel.text=[NSString stringWithFormat:@&%.2f&,longitude];
反地理编码:经纬度坐标—&地名
87 - (IBAction)reverseGeocode {
//1.获得输入的经纬度
NSString *longtitudeText=self.longitudeField.
NSString *latitudeText=self.latitudeField.
if (longtitudeText.length==0||latitudeText.length==0) return;
CLLocationDegrees latitude=[latitudeText doubleValue];
CLLocationDegrees longitude=[longtitudeText doubleValue];
CLLocation *location=[[CLLocation alloc]initWithLatitude:latitude longitude:longitude];
//2.反地理编码
[self.geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
if (error||placemarks.count==0) {
self.reverdeDetailAddressLabel.text=@&你输入的地址没找到,可能在月球上&;
}else//编码成功
//显示最前面的地标信息
CLPlacemark *firstPlacemark=[placemarks firstObject];
self.reverdeDetailAddressLabel.text=firstPlacemark.
CLLocationDegrees latitude=firstPlacemark.location.coordinate.
CLLocationDegrees longitude=firstPlacemark.location.coordinate.
self.latitudeField.text=[NSString stringWithFormat:@&%.2f&,latitude];
self.longitudeField.text=[NSString stringWithFormat:@&%.2f&,longitude];
115 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
[self.view endEditing:YES];
实现效果:
(1)地理编码:(地名-&经纬度坐标)
打印输出:
(2)反地理编码:(经纬度—&地名)
(3)注意:调整键盘
  点击经纬度textField进行输入的时候,弹出的键盘如下
(4)注意:搜索的所有结果都是在中国境内的,因为苹果在中国的地图服务商是高德地图。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3380次
排名:千里之外
转载:40篇
(1)(3)(3)(6)(6)(5)(4)(5)(5)(1)(2)(2)php获取手机用户的位置信息 - ThinkPHP框架
我做了一个手机wap版的网站,现在想获取浏览者的位置信息,请问怎么处理呢?
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。如何查询手机用户当前所在位置?_百度知道&&&&百度地图获取用户位置
百度地图获取用户位置
之前想用系统的locationManager.getLastKnownLocation(provider)获取经纬度,再去访问http://api./geocoder?output=json&location=经度,纬度&key=APIKEY,但是经纬度给我返回null,所以只好用百度接口了。
若举报审核通过,可奖励20下载分
被举报人:
wanglaohushiwo
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
移动开发下载排行

我要回帖

更多关于 微信所在位置 的文章

 

随机推荐