其实苹果iOS系统:精准定位与高效地图服务体验的问题并不复杂,但是又很多的朋友都不太了解,因此呢,今天小编就来为大家分享苹果iOS系统:精准定位与高效地图服务体验的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
//第一步导入框架
@导入核心位置;
//协议和属性
@接口LocationViewController()
@property(非原子,强)CLLocationManager *locationManager;
@property(非原子,强)CLGeocoder *geocoder;
@结尾
@实现LocationViewController
- (void)viewDidLoad {
[超级viewDidLoad];
self.title=@"定位";
[自启动位置];
[自启动编码器];
//加载视图后进行任何其他设置。
}
//开始定位
- (void)开始位置
{
if ([CLLocationManager locationServicesEnabled] [CLLocationManagerauthorizationStatus] !=kCLAuthorizationStatusDenied) {
//设置代理
_locationManager=[[CLLocationManager 分配] init];
_locationManager.delegate=自我;
//设置定位精度
_locationManager.desiredAccuracy=kCLLocationAccuracyBest;
//按顺序定位多远
_locationManager.distanceFilter=100;
//ios8
if ([_locationManager respondsToSelector:@selector(requestWhenInUseAuthorization)]){
[_locationManager requestAlwaysAuthorization];
}
//启动
[_locationManager startUpdatingLocation];
}别的
{
UIAlertView *alertView=[[UIAlertView alloc] initWithTitle:@"提示!" message:@"需要开启定位服务,请进入设置-隐私,开启定位服务" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil];
[警报视图显示];
}
}
#pragma mark - ******************CoreLocation Agent********************
#pragma mark - 跟踪定位代理方法,每次位置发生变化时都会执行(只要定位到对应位置)
//可以通过模拟器设置虚拟位置,否则模拟器中无法调用该方法
//定位成功
- (void)locationManager:(CLLocationManager *)经理didUpdateLocations:(NSArray *)位置
{
CLLocation *location=[locations lastObject];//获取最后一个位置
CLLocationCooperative2D坐标=location.coordinate;//位置坐标
NSLog(@"经度:%f, 纬度:%f", 坐标.经度, 坐标.纬度);
//如果不需要实时定位,使用后关闭定位服务
[_locationManager停止更新位置];
}
//定位失败
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)错误
{
}
- (无效)startCoder
{
_geocoder=[[CLGeocoder alloc] init];
//编码通过地址获取经纬度
[self getCoordinateByAddress:@"北京"];
//逆向编码通过经纬度获取地址
[自我getAddressByLatitude:40.04经度:116.34];
}
#pragma mark - ******************编码****************
-(void)getCooperativeByAddress:(NSString *)地址{
//地理编码
//1.初始化编码对象
_geocoder=[[CLGeocoder alloc] init];
//2.系统块方法geocodeAddressString
[_geocoder geocodeAddressString:address finishHandler:^(NSArray *placemarks, NSError *error) {
//根据方法获取一组数据信息并获取最后一个对象
NSArray *marks=地标;
CLPlacemark *placeMark=[标记最后一个对象];
//通过placeMark获取当前Location对象
//通过location对象获取当前经纬度
CLLocation *位置=placeMark.location;
NSLog(@"%@",placeMark.country);
NSLog(@"%f,%f",位置.坐标.纬度,位置.坐标.经度);
}];
}
#pragma mark - ******************反向编码(根据坐标获取地名)****************
-(void)getAddressByLatitude:(CLLocationDegrees)纬度经度:(CLLocationDegrees)经度{
//反向地理编码
//初始化位置对象和地理编码器对象
CLLocation *location=[[CLLocation alloc] initWithLatitude:纬度经度:经度];
_geocoder=[[CLGeocoder alloc] init];
//调用geocoder的block方法reverseGeocodeLocation
[_geocoderverseGeocodeLocation:locationcompletionHandler:^(NSArray *地标,NSError *错误){
CLPlacemark *placeMark=[地标lastObject];
NSDictionary *dict=placeMark.addressDictionary;
NSLog(@"详细信息:%@",dict);
NSLog(@"City:%@",[dict objectForKey:@"City"]);
}];
}
- (void)didReceiveMemoryWarning {
[超级didReceiveMemoryWarning];
//处理掉所有可以重新创建的资源。
}
/*
#pragma mark - 导航
//在基于故事板的应用程序中,您通常需要在导航之前做一些准备工作
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
//使用[segue destinationViewController] 获取新的视图控制器。
//将选定的对象传递给新的视图控制器。
}
*/
@结尾
#import "MapkitViewController.h"
@导入MapKit;
@导入核心位置;
#import "MYAnnotation.h"
@接口MapkitViewController ()
@property(非原子,强)CLLocationManager *locationManager;
@property(非原子,强)MKMapView *mapView;
@结尾
@实现MapkitViewController
- (void)viewDidLoad {
[超级viewDidLoad];
self.title=@"地图";
[self initWithGUI];
//加载视图后进行任何其他设置。
}
#pragma mark - ******************初始化地图****************
- (无效) initWithGUI{
//初始化地图视图
_mapView=[[MKMapView alloc] initWithFrame:[UIScreen mainScreen].bounds];
[self.view addSubview:_mapView];
//设置代理
_mapView.delegate=自我;
//请求定位服务
_locationManager=[[CLLocationManager 分配] init];
if (![CLLocationManager locationServicesEnabled] || [CLLocationManagerauthorizationStatus] !=kCLAuthorizationStatusAuthorizedWhenInUse) {
[_locationManager requestAlwaysAuthorization];
}
//地图类型
_mapView.mapType=MKMapTypeStandard;
//用户位置跟踪(用户位置跟踪用于标记用户当前位置,此时会调用位置服务)
_mapView.userTrackingMode=MKUserTrackingModeFollow;
//添加引脚
[自行添加注释];
}
#pragma mark 添加pin
-(void)addAnnotation{
CLLocationCooperative2D 位置1=CLLocationCooperative2DMake(40.0304727852, 116.3434817061);
MYAnnotation *annotation1=[[MYAnnotation alloc]init];
注解1.title=@"测试";
annotation1.subtitle=@"蓝鸥";
注释1.坐标=位置1;
[_mapView addAnnotation:annotation1];
}
-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
}
- (void)didReceiveMemoryWarning {
[超级didReceiveMemoryWarning];
//处理掉所有可以重新创建的资源。
}
/*
#pragma mark - 导航
//在基于故事板的应用程序中,您通常需要在导航之前做一些准备工作
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
//使用[segue destinationViewController] 获取新的视图控制器。
//将选定的对象传递给新的视图控制器。
}
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!
【苹果iOS系统:精准定位与高效地图服务体验】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
终于可以不用麻烦地手动输入地址了。
有12位网友表示赞同!
手机里自带导航真心方便!
有17位网友表示赞同!
苹果地图越来越厉害了,路线规划挺精准的。
有6位网友表示赞同!
定位功能很强大,知道你在哪里,也能引导你回家。
有13位网友表示赞同!
出门旅行,IOS的地图真是好用啊!
有14位网友表示赞同!
现在找餐馆、购物的地方都离不开手机地图导航了.
有12位网友表示赞同!
苹果的定位技术一直都是领先的,这点不用怀疑吧。
有12位网友表示赞同!
用手机自带的地图,省钱又方便!
有10位网友表示赞同!
想知道附近有什么好玩的地方吗?就打开地图看一看!
有16位网友表示赞同!
苹果的导航功能越来越人性化了,体验越来越好。
有14位网友表示赞同!
真希望手机随时都能知道我在哪里,这样安全很多。
有15位网友表示赞同!
以前没意识到地图功能对生活的影响这么大。
有13位网友表示赞同!
我的GPS信号一直很强,定位准確率很高。
有8位网友表示赞同!
苹果地图界面设计简洁直观,很容易上手操作。
有16位网友表示赞同!
在陌生的城市里,手机地图就是最好的朋友了!
有15位网友表示赞同!
很多时候,手机地图比路标还要清晰明确。
有8位网友表示赞同!
希望以后地图的功能能更新更丰富.
有19位网友表示赞同!
智能手机加上高精准的地图导航,出行体验大大提升。
有7位网友表示赞同!
使用IOS定位和地图功能,感觉生活效率提高了好多!
有20位网友表示赞同!
对于喜欢开车的我来说,苹果地图简直是必备神器。
有6位网友表示赞同!