*我们的应用程序,可以通过添加Core Location框架所包含的类,获取设备的地图位置.

*添加CoreLocation.framework框架,导入#import<CoreLocation/CoreLocation.h>

*使用地图服务时,会消耗更多地设备电量.因此,在获取到设备的位置后,应该停止定位来节省电量

@跟往常一样,我们通过一个demo来展示内容与效果

//
//  HMTRootViewController.h
//  My-GPS-Map
//
//  Created by hmt on 14-4-12.
//  Copyright (c) 2014年 胡明涛. All rights reserved.
//#import <UIKit/UIKit.h>@interface HMTRootViewController : UIViewController <CLLocationManagerDelegate>@end//
//  HMTRootViewController.m
//  My-GPS-Map
//
//  Created by hmt on 14-4-12.
//  Copyright (c) 2014年 胡明涛. All rights reserved.
//#import "HMTRootViewController.h"
#import <AddressBook/AddressBook.h>@interface HMTRootViewController (){CLLocationManager * _locationManage;
}@property (nonatomic,retain) CLLocationManager * locationManage;@end@implementation HMTRootViewController- (void)dealloc{RELEASE_SAFELY(_locationManage);[super dealloc];}- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];if (self) {// Custom initialization}return self;
}- (void)viewDidLoad
{[super viewDidLoad];// Do any additional setup after loading the view.[self createGPSMap];self.view.backgroundColor = [UIColor redColor];}- (void)createGPSMap{// 初始化位置服务self.locationManage = [[CLLocationManager alloc]init];// 要求CLLocationManager对象返回全部信息_locationManage.distanceFilter = kCLDistanceFilterNone;// 设置定位精度_locationManage.desiredAccuracy = kCLLocationAccuracyBest;// 设置代理_locationManage.delegate = self;// 开始定位[_locationManage startUpdatingLocation];[_locationManage release];}- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations{CLLocation * newLocation = [locations lastObject];// 停止实时定位[_locationManage stopUpdatingLocation];//  取得经纬度CLLocationCoordinate2D coord2D = newLocation.coordinate;double latitude = coord2D.latitude;double longitude = coord2D.longitude;NSLog(@"纬度 = %f  经度 = %f",latitude,longitude);//  取得精度CLLocationAccuracy horizontal = newLocation.horizontalAccuracy;CLLocationAccuracy vertical   = newLocation.verticalAccuracy;NSLog(@"水平方 = %f 垂直方 = %f",horizontal,vertical);//  取得高度CLLocationDistance altitude = newLocation.altitude;NSLog(@"%f",altitude);//  取得此时时刻NSDate *timestamp = [newLocation timestamp];//  实例化一个NSDateFormatter对象NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init];//  设定时间格式[dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss a"];[dateFormat setAMSymbol:@"AM"];         //  显示中文, 改成"上午"[dateFormat setPMSymbol:@"PM"];//  求出当天的时间字符串,当更改时间格式时,时间字符串也能随之改变NSString *dateString = [dateFormat stringFromDate:timestamp];NSLog(@"此时此刻时间 = %@",dateString);//  -----------------------------------------位置反编码--------------------------------------------CLGeocoder * geocoder = [[CLGeocoder alloc]init];[geocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks, NSError *error) {for (CLPlacemark * place in placemarks) {NSLog(@"name = %@",place.name);                                    //  位置名NSLog(@"thoroughfare = %@",place.thoroughfare);                    //  街道NSLog(@"subAdministrativeArea = %@",place.subAdministrativeArea);  //  子街道NSLog(@"locality = %@",place.locality);                            //  市NSLog(@"subLocality = %@",place.subLocality);                      //  区NSLog(@"country = %@",place.country);                              //  国家NSArray *allKeys = place.addressDictionary.allKeys;for (NSString *key in allKeys){NSLog(@"key = %@, value = %@",key, place.addressDictionary[key]);}
#pragma mark - 使用系统定义的字符串直接查询,记得导入AddressBook框架NSLog(@"kABPersonAddressCityKey = %@", (NSString *)kABPersonAddressCityKey);NSLog(@"city = %@", place.addressDictionary[(NSString *)kABPersonAddressCityKey]);NSString *city = place.locality;if(city == nil){city = place.addressDictionary[(NSString *)kABPersonAddressStateKey];}}}];
}- (void)didReceiveMemoryWarning
{[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}@end

@程序运行结果:(以39.3,116.4为例)

    //  判断输入的地址if (self.locationTextField.text == nil  ||  [self.locationTextField.text length] == 0) {return;}CLGeocoder *geocoder = [[CLGeocoder alloc] init];/*  -----------------------------------------位置编码--------------------------------------------  */[geocoder geocodeAddressString:_locationTextField.text completionHandler:^(NSArray *placemarks, NSError *error) {for (CLPlacemark *placemark in placemarks) {CLLocationCoordinate2D coordinate = placemark.location.coordinate;NSString *strCoordinate = [NSString stringWithFormat:@"纬度 = %3.5f\n 经度 = %3.5f",coordinate.latitude,coordinate.longitude];NSLog(@"%@",strCoordinate);NSDictionary *addressDictionary = placemark.addressDictionary;NSString *address = [addressDictionary objectForKey:(NSString *)kABPersonAddressStreetKey];NSString *state = [addressDictionary objectForKey:(NSString *)kABPersonAddressStateKey];NSString *city = [addressDictionary objectForKey:(NSString *)kABPersonAddressCityKey];NSLog(@"街道 = %@\n 省 = %@\n 城市 = %@",address,state,city);}}];

位置与地图(一)定位获取位置及位置编码-反编码相关推荐

  1. 我的高德地图之定位,Marker,位置信息。

    高德地图 ---定位,Marker 本期给大家高德地图的展示,和定位,并显示popwindow(当前位置信息),滑动地图实时更新位置信息: 界面预览 具体实现 新司机爬坑 界面预览 具体实现 //地图 ...

  2. 安卓之位置服务(简单定位用户所在的位置)

    *位置的服务(Location Based Service) 基于位置的服务简称LBS,主要的工作原理就是利用无线电通讯网络或GPS等定位方式来确定出移动设备所在的位置. 基于位置的服务所围绕的核心就 ...

  3. vue点击定位到指定位置_vue页面内部定位到锚点位置

    上个文章写了跨页面的锚点定位,锚点的页面是在mounted里调用的定位到锚点位置,只有新打开此页面时才会执行mounted,所以当前页面内进行点击定位到锚点位置不起作用,解决方法在main.js里的w ...

  4. 三星s6如何打开位置服务器,三星手机如何定位对方手机所在位置(如何知道对方手机位置)...

    三星手机如何定位对方手机所在位置(如何知道对方手机位置) 想要通过百思特网手机A获取手机B的位置信息,首先需要为手机B绑定云账号,并开启"查找手机"功能,然后再通过手机A登录云账号 ...

  5. python 移动鼠标位置_python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法

    PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,利用它可以实现自动化任务 本章介绍了许多不同函数,下面是快速的汇总参考: moveTo(x,y)将鼠 ...

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

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

  7. Android地图定位-百度地图上定位自己所在的位置

    一 效果图 二 主要代码 BaseActivity.java package com.itheima.baidumap74;import com.baidu.mapapi.map.BaiduMap; ...

  8. 百度地图上定位自己所在的位置

    一.运行效果图 二.核心代码 package com.itheima.baidumap74;import com.baidu.mapapi.map.BaiduMap; import com.baidu ...

  9. H5地理定位获取用户当前位置、城市

    第一步:需要在百度地图开发者平台创建一个应用:http://lbsyun.baidu.com/apiconsole/key/create 配置信息 申请配置成功以后返回一个AK 第二步:引入百度地图的 ...

最新文章

  1. iOS基础-高级视图-UITableView--实例:app管理
  2. python入门指南bl-Vue 3 高阶指南之 Map
  3. CentOS系统Yum源配置
  4. POJ2299 树状数组求逆序对
  5. android在视频上放view,android在SurfaceView上播放视频
  6. python写彩票抓取_Python|爬取彩票数据
  7. SPOJ3931(N个点形成三角形的最大面积)
  8. 某校决定由全校学生(C语言)
  9. mysql卸载完环境变量还有_MySql完全卸载
  10. SQL-连接查询:left join,right join,inner join,full join之间的区别
  11. 2-4MySQL数据库安装与初始化
  12. android 写空指针,写下文本内容时bufferedwriter一直显示空指针,求指教
  13. 使用JDBC增删改查
  14. MYSQL异常处理日志:主从库同步延迟时间过长的分析
  15. SQL笔试经典50题
  16. log4j配置(很详细)
  17. DAY9:尚学堂高琪JAVA(98)
  18. 一起初学java,笔记记录的第五天:数组、排序和查找
  19. Java设计模式之外观模式(门面模式,迪米特法则的具体实现,抽象外观类改进)
  20. google earth engine (GEE)面向对象分类 代码

热门文章

  1. 看图软件测试自学,求3D看图软件(不要占内存太大的软件,不需要编辑,只需要测量)...
  2. c#一维数组按照给定的列行数量绕圈输出
  3. 当湿度达到70蜂鸣器警报
  4. Monkey Test简单介绍
  5. JAVA将HTML转化图片最靠谱的方法
  6. 微软人脸识别android,面部识别 | Microsoft Azure
  7. 【Android OpenCV】Visual Studio 创建支持 OpenCV 库的 CMake 工程 ① ( 下载 OpenCV 库 | Windows 中安装 OpenCV 库 )
  8. Linux驱动开发——串口设备驱动
  9. 算法导论第16章练习题 16.1-4
  10. 蜂窝通信知识汇总(包括LTE和NR5G) --目录