位置与地图(一)定位获取位置及位置编码-反编码
*我们的应用程序,可以通过添加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);}}];
位置与地图(一)定位获取位置及位置编码-反编码相关推荐
- 我的高德地图之定位,Marker,位置信息。
高德地图 ---定位,Marker 本期给大家高德地图的展示,和定位,并显示popwindow(当前位置信息),滑动地图实时更新位置信息: 界面预览 具体实现 新司机爬坑 界面预览 具体实现 //地图 ...
- 安卓之位置服务(简单定位用户所在的位置)
*位置的服务(Location Based Service) 基于位置的服务简称LBS,主要的工作原理就是利用无线电通讯网络或GPS等定位方式来确定出移动设备所在的位置. 基于位置的服务所围绕的核心就 ...
- vue点击定位到指定位置_vue页面内部定位到锚点位置
上个文章写了跨页面的锚点定位,锚点的页面是在mounted里调用的定位到锚点位置,只有新打开此页面时才会执行mounted,所以当前页面内进行点击定位到锚点位置不起作用,解决方法在main.js里的w ...
- 三星s6如何打开位置服务器,三星手机如何定位对方手机所在位置(如何知道对方手机位置)...
三星手机如何定位对方手机所在位置(如何知道对方手机位置) 想要通过百思特网手机A获取手机B的位置信息,首先需要为手机B绑定云账号,并开启"查找手机"功能,然后再通过手机A登录云账号 ...
- python 移动鼠标位置_python 调用pyautogui 实时获取鼠标的位置、移动鼠标的方法
PyAutoGUI是一个纯Python的GUI自动化工具,其目的是可以用程序自动控制鼠标和键盘操作,利用它可以实现自动化任务 本章介绍了许多不同函数,下面是快速的汇总参考: moveTo(x,y)将鼠 ...
- 高德sdk定位当前位置_单次定位-获取位置-开发指南-iOS 定位SDK | 高德地图API
iOS定位SDK提供的单次定位方法基于苹果定位核心,苹果定位核心会在设备移动时连续返回定位结果,高德在此基础上封装了单次定位.当设备可以正常联网时,还可以返回该定位点的对应的中国境内位置信息(包括:省 ...
- Android地图定位-百度地图上定位自己所在的位置
一 效果图 二 主要代码 BaseActivity.java package com.itheima.baidumap74;import com.baidu.mapapi.map.BaiduMap; ...
- 百度地图上定位自己所在的位置
一.运行效果图 二.核心代码 package com.itheima.baidumap74;import com.baidu.mapapi.map.BaiduMap; import com.baidu ...
- H5地理定位获取用户当前位置、城市
第一步:需要在百度地图开发者平台创建一个应用:http://lbsyun.baidu.com/apiconsole/key/create 配置信息 申请配置成功以后返回一个AK 第二步:引入百度地图的 ...
最新文章
- iOS基础-高级视图-UITableView--实例:app管理
- python入门指南bl-Vue 3 高阶指南之 Map
- CentOS系统Yum源配置
- POJ2299 树状数组求逆序对
- android在视频上放view,android在SurfaceView上播放视频
- python写彩票抓取_Python|爬取彩票数据
- SPOJ3931(N个点形成三角形的最大面积)
- 某校决定由全校学生(C语言)
- mysql卸载完环境变量还有_MySql完全卸载
- SQL-连接查询:left join,right join,inner join,full join之间的区别
- 2-4MySQL数据库安装与初始化
- android 写空指针,写下文本内容时bufferedwriter一直显示空指针,求指教
- 使用JDBC增删改查
- MYSQL异常处理日志:主从库同步延迟时间过长的分析
- SQL笔试经典50题
- log4j配置(很详细)
- DAY9:尚学堂高琪JAVA(98)
- 一起初学java,笔记记录的第五天:数组、排序和查找
- Java设计模式之外观模式(门面模式,迪米特法则的具体实现,抽象外观类改进)
- google earth engine (GEE)面向对象分类 代码
热门文章
- 看图软件测试自学,求3D看图软件(不要占内存太大的软件,不需要编辑,只需要测量)...
- c#一维数组按照给定的列行数量绕圈输出
- 当湿度达到70蜂鸣器警报
- Monkey Test简单介绍
- JAVA将HTML转化图片最靠谱的方法
- 微软人脸识别android,面部识别 | Microsoft Azure
- 【Android OpenCV】Visual Studio 创建支持 OpenCV 库的 CMake 工程 ① ( 下载 OpenCV 库 | Windows 中安装 OpenCV 库 )
- Linux驱动开发——串口设备驱动
- 算法导论第16章练习题 16.1-4
- 蜂窝通信知识汇总(包括LTE和NR5G) --目录