欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

IOS入門筆記之地理位置定位系統(tǒng)

 更新時間:2016年01月27日 09:25:13   作者:Good_HeYang  
關(guān)于地理位置及定位系統(tǒng),在iOS開發(fā)中也比較常見,接下來通過本文給大家介紹IOS入門筆記之地理位置定位系統(tǒng),對ios地理位置定位系統(tǒng)感興趣的朋友一起學(xué)習(xí)吧

前言:關(guān)于地理位置及定位系統(tǒng),在iOS開發(fā)中也比較常見,比如美團外面的餐飲店鋪的搜索,它首先需要用戶當(dāng)前手機的位置,然后在這個位置附近搜索相關(guān)的餐飲店鋪的位置,并提供相關(guān)的餐飲信息,再比如最常見的就是地圖導(dǎo)航,地圖導(dǎo)航更需要定位服務(wù),然后根據(jù)用戶的目的地選出一條路線。其實,作為手機用戶這么長時間,或多或少會發(fā)現(xiàn)在有些app應(yīng)用首次在你的手機安裝成功后,首次啟動可能就會提示"是否同意XXx(比如百度瀏覽器)獲取當(dāng)前位置"等這樣一類的信息。可見地理位置及定位系統(tǒng)是企業(yè)app開發(fā)必不可少的技能。

本章將提供Swift版本和Objective-C兩個版本的入門代碼,分別實現(xiàn)顯示當(dāng)前手機或者是模擬器的地理經(jīng)緯度坐標(biāo)。

寫在正式學(xué)習(xí)前的小貼士:

這是因為xcode升級造成的定位權(quán)限設(shè)置問題。
升級xcode6、xcode7以后打開以前xcode5工程,程序不能定位。工程升級到xcode6或xcode7編譯時需要iOS8 要自己寫授權(quán),不然沒權(quán)限定位。

解決方法:

首先在 info.plist里加入對應(yīng)的缺省字段 ,值設(shè)置為YES(前臺定位寫上邊字段,前后臺定位寫下邊字段)
NSLocationWhenInUseUsageDescription //允許在前臺獲取GPS的描述
NSLocationAlwaysUsageDescription //允許在前、后臺獲取GPS的描述

設(shè)置的圖示:


好了,如果設(shè)置好了,那就正式進入編碼學(xué)習(xí)吧,首先熟悉蘋果提供的關(guān)于定位服務(wù)相關(guān)的類,方法以及屬性:

1、定位服務(wù)和地圖應(yīng)用的介紹

定位服務(wù): 獲取用戶當(dāng)前的位置信息,針對用戶的位置信息做相關(guān)的數(shù)據(jù)處理。

地圖應(yīng)用: 根據(jù)實際需求展示地圖和周邊環(huán)境信息,基于用戶當(dāng)前位置展示用戶所關(guān)注的地圖位置信息、以及為用戶導(dǎo)航。

•定位服務(wù)要掌握的:

•主要操作的類:CLLocationManager

•所屬庫:CoreLocation

•結(jié)構(gòu)體:CLLocationCoordinate2D(經(jīng)緯度)、CLCLocationCoorRegion(區(qū)域)

•地圖應(yīng)用需要掌握的:

•框架:MapKit

•操作類:MKMapView

2、定位服務(wù)

•屬性:

•desiredAccuracy設(shè)置定位精確度,這是一個常量屬性,一般用best
•distanceFilter 重新定位的最小變化距離

方法:

•設(shè)置什么時候開啟定位的狀態(tài) •requestAlwaysAuthorization() 始終開啟定位
•requestWhenInUseAuthorization() 當(dāng)app進入前臺的時候開啟定位(iOS8的新方法)
•類方法locationServicesEnabled() 是否有定位服務(wù)功能(CLLocationManager)
•startUpdatingLocation() 開啟定位

代理:

•代理的協(xié)議:
•代理的方法:可以直接進入這個庫的API查看,只要就是定位錯誤調(diào)用的代理方法,定位成功調(diào)用的代理方法等等;

涉及到的對象

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

英語詞匯積累:

•accuracy 英 'ækjʊrəsɪ n. [數(shù)] 精確度,準(zhǔn)確性
•filter 英 'fɪltə 濾波器 過濾器;篩選;濾光器 過濾;滲透;用過濾法除去

下面提供的是Swift源碼:

//
// ViewController.swift
// LocationManager
//
// Created by HEYANG on //.
// Copyright © 年 HEYANG. All rights reserved.
//
import UIKit
// 需要導(dǎo)入CoreLocation框架
import CoreLocation
class ViewController: UIViewController,CLLocationManagerDelegate {
// 聲明一個全局變量
var locationManager:CLLocationManager!
override func viewDidLoad() {
super.viewDidLoad()
locationManager = CLLocationManager()
// 設(shè)置定位的精確度
locationManager.desiredAccuracy = kCLLocationAccuracyBest
// 設(shè)置定位變化的最小距離 距離過濾器
locationManager.distanceFilter = 
// 設(shè)置請求定位的狀態(tài)
if #available(iOS ., *) {
locationManager.requestWhenInUseAuthorization()
} else {
// Fallback on earlier versions
print("hello")
}//這個是在ios之后才有的
// 設(shè)置代理為當(dāng)前對象
locationManager.delegate = self;
if CLLocationManager.locationServicesEnabled(){
// 開啟定位服務(wù)
locationManager.startUpdatingLocation()
}else{
print("沒有定位服務(wù)")
}
}
// 定位失敗調(diào)用的代理方法
func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {
print(error)
}
// 定位更新地理信息調(diào)用的代理方法
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
if locations.count > 
{
let locationInfo = locations.last!
let alert:UIAlertView = UIAlertView(title: "獲取的地理坐標(biāo)",
message: "經(jīng)度是:\(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];
// 設(shè)置定位精確度
locationManager.desiredAccuracy = kCLLocationAccuracyBest;
// 設(shè)置定位變化最小距離
locationManager.distanceFilter = ;
// 設(shè)置定位服務(wù)的使用狀態(tài)
[locationManager requestWhenInUseAuthorization]; 
locationManager.delegate = self;
if ([CLLocationManager locationServicesEnabled]) {
[locationManager startUpdatingLocation];
}else{
NSLog(@"本機不支持定位服務(wù)功能");
}
self.locationManager = locationManager;
}
// 定位失敗調(diào)用的代理方法
-(void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error{
NSLog(@"錯誤信息:%@",error);
}
// 定位數(shù)據(jù)更新調(diào)用的代理方法
-(void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray<CLLocation *> *)locations{
if (locations.count > ) {
CLLocation* location = locations.lastObject;
CLLocationCoordinateD coordinateD = location.coordinate;
NSString* message = [NSString stringWithFormat:@"經(jīng)度:%lf,維度是:%lf",coordinateD.longitude,coordinateD.latitude];
UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"顯示當(dāng)前位置的經(jīng)緯度"                 message:message delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:@"確定", nil];
[alertView show];
}
}
@end 

以上是小編給大家分享的IOS入門筆記之地理位置定位系統(tǒng),希望對大家有所幫助。

相關(guān)文章

  • 在Swift中使用JSONModel 實例代碼

    在Swift中使用JSONModel 實例代碼

    本文主要介紹在Swift中使用JSONModel,這里給大家提供代碼實例做參考,希望能幫助有需要的小伙伴
    2016-07-07
  • ios實現(xiàn)tableView頂部彈簧圖片效果

    ios實現(xiàn)tableView頂部彈簧圖片效果

    這篇文章主要為大家詳細(xì)介紹了ios實現(xiàn)tableView頂部彈簧圖片效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Objective-C與Swift之間的互相調(diào)用和跳轉(zhuǎn)

    Objective-C與Swift之間的互相調(diào)用和跳轉(zhuǎn)

    這篇文章主要給大家介紹了關(guān)于Objective-C與Swift之間的互相調(diào)用和跳轉(zhuǎn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-05-05
  • iOS中的UITextView文字輸入光標(biāo)使用技巧小結(jié)

    iOS中的UITextView文字輸入光標(biāo)使用技巧小結(jié)

    UITextView在用戶體驗方面有著十分明顯的作用,包括鍵盤的呼出及文字的選擇等,接下來就來整理給出一份iOS中的UITextView文字輸入光標(biāo)使用技巧小結(jié),需要的朋友可以參考下
    2016-05-05
  • iOS實現(xiàn)手指點擊出現(xiàn)波紋的效果

    iOS實現(xiàn)手指點擊出現(xiàn)波紋的效果

    最近在閑暇的時間做了一個反饋手指點擊屏幕的效果,用到了CAShapeLayer和基本的動畫知識,實現(xiàn)的效果很贊,這種效果使用在某些頁面上肯定會給用戶更有趣的體驗,特別是面向兒童的app中。文中給出了詳細(xì)的示例代碼,感興趣的朋友們下面來一起看看吧。
    2016-12-12
  • iOS開發(fā)之Quartz2D的介紹與使用詳解

    iOS開發(fā)之Quartz2D的介紹與使用詳解

    什么是Quartz2D?Quartz 2D是一個二維繪圖引擎,同時支持iOS和Mac系統(tǒng)。下面這篇文章主要介紹了iOS開發(fā)之Quartz2D的介紹與使用的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Swift項目集成QQ授權(quán)登錄

    Swift項目集成QQ授權(quán)登錄

    這篇文章主要介紹了Swift項目集成QQ授權(quán)登錄的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-11-11
  • iOS實現(xiàn)列表折疊效果

    iOS實現(xiàn)列表折疊效果

    這篇文章主要為大家詳細(xì)介紹了iOS實現(xiàn)列表折疊效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • iOS將地址解析成經(jīng)緯度的方法

    iOS將地址解析成經(jīng)緯度的方法

    這篇文章主要為大家詳細(xì)介紹了iOS將地址解析成經(jīng)緯度的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 簡單談?wù)凜ore Animation 動畫效果

    簡單談?wù)凜ore Animation 動畫效果

    下面小編就為大家?guī)硪黄唵握務(wù)凜ore Animation 動畫效果。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論