你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS入門筆記之地輿地位定位體系

IOS入門筆記之地輿地位定位體系

編輯:IOS開發綜合

媒介:關於地輿地位及定位體系,在IOS開辟中也比擬罕見,好比美團裡面的餐飲商號的搜刮,它起首須要用戶以後手機的地位,然後在這個地位鄰近搜刮相干的餐飲商號的地位,並供給相干的餐飲信息,再好比最多見的就是地圖導航,地圖導航更須要定位辦事,然後依據用戶的目標地選出一條道路。其實,作為手機用戶這麼長時光,或多或少會發明在有些app運用初次在你的手機裝置勝利後,初次啟動能夠就會提醒"能否贊成XXx(好比百度閱讀器)獲得以後地位"等如許一類的信息。可看法理地位及定位體系是企業app開辟必弗成少的技巧。

本章將供給Swift版本和Objective-C兩個版本的入門代碼,分離完成顯示以後手機或許是模仿器的地輿經緯度坐標。

寫在正式進修前的小貼士:

這是由於xcode進級形成的定位權限設置成績。
進級xcode6、xcode7今後翻開之前xcode5工程,法式不克不及定位。工程進級到xcode6或xcode7編譯時須要IOS8 要本身寫受權,否則沒權限制位。

處理辦法:

起首在 info.plist裡參加對應的缺省字段 ,值設置為YES(前台定位寫上邊字段,前後台定位寫下邊字段)
NSLocationWhenInUseUsageDescription //許可在前台獲得GPS的描寫
NSLocationAlwaysUsageDescription //許可在前、後台獲得GPS的描寫

設置的圖示:


好了,假如設置好了,那就正式進入編碼進修吧,起首熟習蘋果供給的關於定位辦事相干的類,辦法和屬性:

1、定位辦事和地圖運用的引見

定位辦事: 獲得用戶以後的地位信息,針對用戶的地位信息做相干的數據處置。

地圖運用: 依據現實需求展現地圖和周邊情況信息,基於用戶以後地位展現用戶所存眷的地圖地位信息、和為用戶導航。

•定位辦事要控制的:

•重要操作的類:CLLocationManager

•所屬庫:CoreLocation

•構造體:CLLocationCoordinate2D(經緯度)、CLCLocationCoorRegion(區域)

•地圖運用須要控制的:

•框架:MapKit

•操作類:MKMapView

2、定位辦事

•屬性:

•desiredAccuracy設置定位准確度,這是一個常量屬性,普通用best
•distanceFilter 從新定位的最小變更間隔

辦法:

•設置甚麼時刻開啟定位的狀況 •requestAlwaysAuthorization() 一直開啟定位
•requestWhenInUseAuthorization() 當app進入前台的時刻開啟定位(IOS8的新辦法)
•類辦法locationServicesEnabled() 能否有定位辦事功效(CLLocationManager)
•startUpdatingLocation() 開啟定位

署理:

•署理的協定:
•署理的辦法:可以直接進入這個庫的API檢查,只需就是定位毛病挪用的署理辦法,定位勝利挪用的署理辦法等等;

觸及到的對象

•locations: CLLocation 該CLLocation對象的屬性: •coordinate •longitude/latitude

英語辭匯積聚:

•accuracy 英 'ækjʊrəsɪ n. [數] 准確度,精確性
•filter 英 'fɪltə 濾波器 過濾器;挑選;濾光器 過濾;滲入滲出;用過濾法除去

上面供給的是Swift源碼:

//
// ViewController.swift
// LocationManager
//
// Created by HEYANG on //.
// Copyright © 年 HEYANG. All rights reserved.
//
import UIKit
// 須要導入CoreLocation框架
import CoreLocation
class ViewController: UIViewController,CLLocationManagerDelegate {
// 聲明一個全局變量
var locationManager:CLLocationManager!
override func viewDidLoad() {
super.viewDidLoad()
locationManager = CLLocationManager()
// 設置定位的准確度
locationManager.desiredAccuracy = kCLLocationAccuracyBest
// 設置定位變更的最小間隔 間隔過濾器
locationManager.distanceFilter = 
// 設置要求定位的狀況
if #available(iOS ., *) {
locationManager.requestWhenInUseAuthorization()
} else {
// Fallback on earlier versions
print("hello")
}//這個是在ios以後才有的
// 設置署理為以後對象
locationManager.delegate = self;
if CLLocationManager.locationServicesEnabled(){
// 開啟定位辦事
locationManager.startUpdatingLocation()
}else{
print("沒有定位辦事")
}
}
// 定位掉敗挪用的署理辦法
func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
print(error)
}
// 定位更新地輿信息挪用的署理辦法
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if locations.count > 
{
let locationInfo = locations.last!
let alert:UIAlertView = UIAlertView(title: "獲得的地輿坐標",
message: "經度是:\(locationInfo.coordinate.longitude),維度是:\(locationInfo.coordinate.latitude)",
delegate: nil, cancelButtonTitle: "是的")
alert.show()
}
}
}

上面是Objective-C的源碼:

//
// ViewController.m
// LocationManager
//
// Created by HEYANG on //.
// Copyright © 年 HEYANG. All rights reserved.
//
#import "ViewController.h"
#import <CoreLocation/CoreLocation.h>
@interface ViewController () <CLLocationManagerDelegate>
/** 全局定位對象 */
@property (nonatomic,strong)CLLocationManager *locationManager;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
CLLocationManager* locationManager = [[CLLocationManager alloc] init];
// 設置定位准確度
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
// 設置定位變更最小間隔
locationManager.distanceFilter = ;
// 設置定位辦事的應用狀況
[locationManager requestWhenInUseAuthorization]; 
locationManager.delegate = self;
if ([CLLocationManager locationServicesEnabled]) {
[locationManager startUpdatingLocation];
}else{
NSLog(@"本機不支撐定位辦事功效");
}
self.locationManager = locationManager;
}
// 定位掉敗挪用的署理辦法
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
NSLog(@"毛病信息:%@",error);
}
// 定位數據更新挪用的署理辦法
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{
if (locations.count > ) {
CLLocation* location = locations.lastObject;
CLLocationCoordinateD coordinateD = location.coordinate;
NSString* message = [NSString stringWithFormat:@"經度:%lf,維度是:%lf",coordinateD.longitude,coordinateD.latitude];
UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"顯示以後地位的經緯度"                 message:message delegate:nil cancelButtonTitle:@"撤消" otherButtonTitles:@"肯定", nil];
[alertView show];
}
}
@end 

以上是小編給年夜家分享的IOS入門筆記之地輿地位定位體系,願望對年夜家有所贊助。

【IOS入門筆記之地輿地位定位體系】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved