美文网首页
IOS 地图

IOS 地图

作者: HCong | 来源:发表于2017-03-13 12:30 被阅读18次

定位服务是通过gps等方式查找定位自己的位置的,再通过地图标注出来。
在ios中定位服务和地图开发是使用两套api分别完成的。

位置信息获取:

ios系统开发提供3种不同定位途径:

  • wifi定位:通过查询一个wifi路由器的地理位置信息,iphone、ipod touch、ipad都可以采用。
  • 蜂窝式移动开发其他 电话基站定位:通过移动开发其他 运营商基站定位
  • gps卫星定位:通过3~4颗gps卫星位置定位,最为准确,但是耗电量大。ios不像android系统开发在定位服务编程时可以指定采用哪种途径进行定位。ios的api把底层这些细节屏蔽掉了,开发开发人员和用户并不知道现在设备采用哪种方式进行定位,ios系统开发会根据设备的情况和周围环境,采用一套最佳的解决方案。
  • 具体是:如果能够gps信息,那么设备优先采用gps定位,否则采用wifi或蜂窝基站定位,在wifi和蜂窝基站之间优先使用wifi,如果无法连接到wifi才使用蜂窝基站定位。

定位:

要实现地图、导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位操作。Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图开发要配合定位框架使用。在Core Location中主要包含了定位、地理编码(包括反编码)功能。

#import "ViewController.h"
#import <MapKit/MapKit.h>
#import <CoreLocation/CoreLocation.h>
@interface ViewController () <MKMapViewDelegate, CLLocationManagerDelegate>
@property (nonatomic, weak) MKMapView *mpview;
// 定位管理者必须为强引用,避免在viewDidLoad方法过后被释放导致定位失败
@property (nonatomic, strong) CLLocationManager *manager;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    MKMapView *mpview = [[MKMapView alloc] init];
    self.mpview = mpview;
    mpview.showsUserLocation = YES;
    self.mpview.frame = self.view.bounds;
    self.mpview.delegate = self;
    [self.view addSubview:self.mpview];
    
    CLAuthorizationStatus authorizationStatus = [CLLocationManager authorizationStatus];
    self.manager = [[CLLocationManager alloc] init];
     //设置定位精度
    self.manager.desiredAccuracy=kCLLocationAccuracyBest;

    //定位频率,每隔多少米定位一次
    CLLocationDistance distance=10.0;
    //十米定位一次
    self.manager.distanceFilter=distance;

    self.manager.delegate = self;
    if ([CLLocationManager locationServicesEnabled]) { // 定位服务开启
        switch (authorizationStatus) { // 定位服务授权
            case kCLAuthorizationStatusNotDetermined: // 未决定(app首次打开)
            case kCLAuthorizationStatusRestricted: //  受限制的
            case kCLAuthorizationStatusDenied:   // 被拒绝
            {
                // 跳转到app设置界面进行授权
                // UIApplicationOpenSettingsURLString(ios >= 8.0)
                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString] options:@{} completionHandler:^(BOOL success) {
                    NSLog(@"Open URL success");
                }];
                break;
            }
                
            default:  // 已授权允许使用定位服务
                break;
        }
        // 开始定位
        [self.manager startUpdatingLocation];
    } else {
        // 开启GPS定位服务
    }
    
    
}

// 定位成功代理方法
- (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{
    CLLocation *location = locations.firstObject;
    CLLocationCoordinate2D coordinate = location.coordinate;
    NSLog(@"%f------%f",coordinate.latitude, coordinate.longitude);
    CLGeocoder *geocoder = [[CLGeocoder alloc] init];
    [geocoder reverseGeocodeLocation:locations.firstObject completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {
        CLPlacemark *placeM = placemarks.firstObject;
        NSDictionary *address = placeM.addressDictionary;
        NSLog(@"%@",address);
        [self.manager stopUpdatingLocation];
    }];
}
// 定位失败代理
- (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error {

}

相关文章

  • iOS Mapkit的使用

    【iOS】Mapkit的使用:地图显示、定位、大头针、气泡等 标签:iOS地图mapkit 1.显示地图 (1)首...

  • IOS地图定位导航

    title : IOS地图定位导航category : UI 地图定位导航 标签(空格分隔): IOS 概述 I...

  • iOS 使用高德地图正确姿势(三)

    iOS 使用高德地图正确姿势(一)iOS 使用高德地图正确姿势(二) 实现大头针始终在地图中心,拖动地图实时poi...

  • iOS原生地图 MKMapView 库翻译

    iOS原生地图 MKMapView 库翻译 作业部落存档 标签: iOS地图 引入系统库@import MapKi...

  • RN-地图导航

    调起百度网页地图路径导航 调起高德网页地图路径导航 iOS调起百度APP地图路径导航 iOS调起高德app地图路径...

  • ios ~ 高德地图:使用方法及示例

    相关文档【高德地图官方文档】:1、iOS 地图SDK[https://lbs.amap.com/api/ios-s...

  • MapKit框架的使用

    一. 地图的基本使用 1. 设置地图显示类型 地图的样式可以手动设置, 在iOS9.0之前有3种, iOS9.0之...

  • iOS 地图

    iOS 地图 基础 一 :定位 在 iOS 程序开发中 地图功能是普遍存在的,刚好最近都在研究地图的功能。总结一下...

  • MapKit框架的使用

    一. 地图的基本使用 1. 设置地图显示类型 地图的样式可以手动设置, 在iOS9.0之前有3种, iOS9.0之...

  • MapKit框架的使用

    一. 地图的基本使用 1. 设置地图显示类型 地图的样式可以手动设置, 在iOS9.0之前有3种, iOS9.0之...

网友评论

      本文标题:IOS 地图

      本文链接:https://www.haomeiwen.com/subject/uypfnttx.html