1. 程式人生 > >iOS 開發 如何獲得使用者當前位置(通過經緯度獲得城市、省份等資訊)

iOS 開發 如何獲得使用者當前位置(通過經緯度獲得城市、省份等資訊)

 iOS系統自帶定位,用CLLocationManager就可以輕鬆的實現定位的操作,獲得的是一組經緯度,當然,也可以根據給出的經緯度獲取相應的省份、城市、街道等資訊,下面就看一個根據經緯度獲得城市的demo:

        因為獲取經緯度需要CLLocationManager類,而這個類包含在CoreLocation框架中,獲取城市資訊需要mapKit框架,所以需要首先在工程中匯入這兩個框架:

匯入框架的步驟:選擇1.target――2.Build Phases――3.Link Binary With Libraries ――4.點選“+”號:如圖所示步驟:

wKioL1PXqp7DYcryAAOBjKWmsyk065.jpg

點選加號之後在搜尋框裡輸入相應的框架,即可搜尋到,如圖所示


wKiom1PXqh6StAPgAACn05SwfcA815.jpg

wKioL1PXqzijsZ3XAACs3YTFvtQ793.jpg

下面就該寫程式碼了,首先在檢視控制器中匯入:

#import <CoreLocation/CoreLocation.h>
#import <MapKit/MapKit.h>

兩個標頭檔案,然後.m中的具體程式碼如下:

#import "ANNViewController.h"


@interface ANNViewController ()
@property (strong, nonatomic) IBOutlet UILabel *longitude;
@property (strong, nonatomic) IBOutlet UILabel *latitude;

@property
(strong, nonatomic) IBOutlet UILabel *location; @property (strong, nonatomic) CLLocationManager *locationManager; @end @implementation ANNViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.view.backgroundColor = [UIColor
whiteColor]; //建立CLLocationManager物件 self.locationManager = [[CLLocationManager alloc] init]; //設定代理為自己 self.locationManager.delegate = self; } - (IBAction)locationButton:(UIButton *)sender { [self.locationManager startUpdatingLocation]; } - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { //將經度顯示到label上 self.longitude.text = [NSString stringWithFormat:@"%lf", newLocation.coordinate.longitude]; //將緯度現實到label上 self.latitude.text = [NSString stringWithFormat:@"%lf", newLocation.coordinate.latitude]; // 獲取當前所在的城市名 CLGeocoder *geocoder = [[CLGeocoder alloc] init]; //根據經緯度反向地理編譯出地址資訊 [geocoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *array, NSError *error) { if (array.count > 0) { CLPlacemark *placemark = [array objectAtIndex:0]; //將獲得的所有資訊顯示到label上 self.location.text = placemark.name; //獲取城市 NSString *city = placemark.locality; if (!city) { //四大直轄市的城市資訊無法通過locality獲得,只能通過獲取省份的方法來獲得(如果city為空,則可知為直轄市) city = placemark.administrativeArea; } NSLog(@"city = %@", city); } else if (error == nil && [array count] == 0) { NSLog(@"No results were returned."); } else if (error != nil) { NSLog(@"An error occurred = %@", error); } }]; //系統會一直更新資料,直到選擇停止更新,因為我們只需要獲得一次經緯度即可,所以獲取之後就停止更新 [manager stopUpdatingLocation]; }

主要就是直轄市的城市獲得需要拐個彎,iOS7添加了一個新的方法,代替了上面這個方法:

- (void)locationManager:(CLLocationManager *)manager
 didUpdateLocations:(NSArray *)locations
{
    NSLog(@"longitude = %f", ((CLLocation *)[locations
lastObject]).coordinate.longitude);
    NSLog(@"latitude = %f", ((CLLocation *)[locations lastObject]).coordinate.latitude);
    
    [manager stopUpdatingLocation];
}

後面的處理和上面的方法一樣,大家可以看一下。

另外還有一些CLGeocoder的屬性如下:

@property (nonatomic, readonly) NSDictionary *addressDictionary;

// address dictionary properties
@property (nonatomic, readonly) NSString *name; // eg. Apple Inc.
@property (nonatomic, readonly) NSString *thoroughfare; // street address, eg. 1 Infinite Loop
@property (nonatomic, readonly) NSString *subThoroughfare; // eg. 1
@property (nonatomic, readonly) NSString *locality; // city, eg. Cupertino
@property (nonatomic, readonly) NSString *subLocality; // neighborhood, common name, eg. Mission District
@property (nonatomic, readonly) NSString *administrativeArea; // state, eg. CA
@property (nonatomic, readonly) NSString *subAdministrativeArea; // county, eg. Santa Clara
@property (nonatomic, readonly) NSString *postalCode; // zip code, eg. 95014
@property (nonatomic, readonly) NSString *ISOcountryCode; // eg. US
@property (nonatomic, readonly) NSString *country; // eg. United States
@property (nonatomic, readonly) NSString *inlandWater; // eg. Lake Tahoe
@property (nonatomic, readonly) NSString *ocean; // eg. Pacific Ocean
@property (nonatomic, readonly) NSArray *areasOfInterest; // eg. Golden Gate Park

相關推薦

iOS 開發 如何獲得使用者當前位置(通過經緯度獲得城市省份資訊)

 iOS系統自帶定位,用CLLocationManager就可以輕鬆的實現定位的操作,獲得的是一組經緯度,當然,也可以根據給出的經緯度獲取相應的省份、城市、街道等資訊,下面就看一個根據經緯度獲得城市的demo:         因為獲取經緯度需要CLLocationM

根據HTML5 獲取當前位置經緯度

yun .get rip 變量 src ted call location gets 是想讓地圖的定位用戶位置更準確一些。 查看了介紹: http://www.w3school.com.cn/html5/html_5_geolocation.asp 看介紹中拿數據挺簡單。

IOS 地圖定位,標記位置,獲取經緯度,MKMapView的使用

IOS 地圖定位,標註地圖,獲取經緯度: 一、使用MKMapView 定位 二、在地圖上通過經緯度標註(大頭針) 最終效果圖: 開啟應用程式會自動定位並且放大到自己的位置,然後在我的位置上顯示自己的經緯度,通過填寫經緯度可以放置大頭針標註。 一、獲取自身的位置和經緯

iOS開發之tableview位置錯亂,偏移,回到原來位置

上拉重新整理後發現數據位置錯亂?tableview的偏移不對?比如資料一共有40條,一次載入20條,正常應該顯示在第21條,上拉時載入後發現tableview停在了第11條或者30幾條,如果你發生了和我一樣的情況,那看這裡 - (void)addRefresh

iOS開發適配之通過系統statusBar判斷裝置網路狀態(iPhone X 已適配)

通過系統statusBar判斷裝置網路狀態 (已適配iPhone X) // 獲取裝置網路狀態 + (NSString *)deviceNetWorkStatus { UIApplicatio

iOS開發:常用的UIView控制元件——UILabelUITextFieldUIButton

前面幾篇文章已經對iOS開發中比較基本的幾個檔案進行了瞭解,今天主要學習StoryBoard檔案和幾個常見的UI控制元件。 Storyboard功能是在iOS5開始新增的功能,一種新技術的出現大多是為了彌補舊技術的不足,而在storyboard之前iOS 開發設計介面是使用nib檔案(xib

iOS開發(swift):Aspect Fill 和 Aspect Fit 的區別

參考資料:https://blog.csdn.net/henanzhg/article/details/50765903?utm_source=blogxgwz6 當我們需要在UIImageView中新增圖片的時候,在UIImageView的屬性編輯欄中有Mode選項欄中有很多種圖片的填充方式,

iOS開發之靜態庫(三)—— 圖片介面xib資原始檔封裝到.a靜態庫

轉自:https://blog.csdn.net/mylizh/article/details/38707175編譯環境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3)一、首先將資原始檔打包成bundle新建

iOS開發之正則表示式快速教程(NSPredicateNSRegularExpression)

1、校驗密碼強度 密碼的強度必須包含大小寫字母和數字的組合,不能使用特殊字元,長度在8-10之間 ^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$ 2、校驗中文 字串只能是中文 ^[\\u4e00-\\u9fa5]{0,}$ 3、由數字,26個英文字母或下劃線

iOS開發-使用Runloop實現執行緒保活執行緒常駐

保證執行緒的長時間存活 在iOS開發過程中,有時一些花費時間比較長的操作阻塞主執行緒,導致介面卡頓,那麼我們就會建立一個子執行緒,然後把這些花費時間比較長的操作放在子執行緒中來處理。可是當子執行緒中的任務執行完畢後,子執行緒就會被銷燬掉。 首先,我們建立一

IOS開發(7)WKWebView載入本地HTMLCSSJS檔案JS(解決html內訪問其他資源路徑問題)

這段時間開發IOS應用,自己本身是搞java web 和 android,搞ios應用後面還有好多坑要跳,所以學習一點就整理一點筆記。不敢保證內容都是對的,但至少,我嘗試過分析整理的。 UIWebVIew和WKWebView都是ios提供的web控制元件。但是

iOS開發之自定義鍵盤(數字,字母型別隨意切換)

專案開發很多時候用系統給的鍵盤不是很滿足自身實際需求,那就自定義一個吧: 方法其實很簡單,重新定義一個view,繼承UItextfield,把UI設計好的需求鍵盤加入新的otherKeyboardView,然後執行程式碼:  self.inputView =self.oth

iOS開發_textField的placeholder屬性的字型顏色大小的設定

textField.placeholder = @"大保羅的iOS歷程"; [textField setValue:[UIColor redColor] forKeyPath:@"_placeho

React Native獲取地理位置(獲取具體城市經緯度

並不是所有的APP都要獲取你當前的地理位置的,但是有的APP對這方面是特別重要的,例如催收的行業,準確獲取借款人的位置,才能不撲空~~ 基本上實現的原理其實很簡單,前端要做的事情就是每次開啟APP的時候獲取一下手機當前的位置,或者每隔幾分鐘就重新獲取一次。 注:RN提供的方法只能獲取到經緯度,不會直接給你具

iOS開發:PDF檔案的載入及顯示(網路本地)

話說,公司專案需要顯示PDF檔案,於是遍尋了網路,發現的方法以下幾種: 1.使用UIWebView載入,沒啥說的,根據檔案路徑,網路或者本地皆可,建立一個NSURLRequest,然後用webView載入就可以了,但僅僅能顯示檔案,很low; 2.使用UID

iOS開發筆記之跳轉QQ聊天頁跳轉微信應用內撥打電話

NSURL *url; // QQ url = [NSURL URLWithString:[NSString stringWithFormat:@"mqq://im/chat?chat_type=wpa&uin=%@&version=1&src_typ

iOS開發——高德地圖調研之顯示地圖定位與地理編碼

在 檔案中加入(**注意2D地圖和3D地圖不能同時使用) od 'AMap3DMap' #3D地圖SDK pod 'AMap2DMap' #2D地圖SDK(2D地圖和3D地圖不能同時使用) pod 'AMapSearch' #搜尋服務SDK 然後進行下載 然後開啟字尾為.xcworkspace工程 程式碼如下

java後臺百度地圖經緯度和地址之間的相互轉換(通過經緯度獲取地址通過地址獲取經緯度

準備工作: 百度地圖有json和xml兩種形式儲存資料 3、匯入jar包:此處通過json形式,需匯入jar包 json所需要的jar包如下: json-lib-2.3-jdk15.jar json所依賴的jar如下: commons-beanutils-1.

asp程式碼微信使用者獲取座標位置及詳細地址省市縣區街道資訊

//獲取定位 //$(".getLocation").on(“click”, function(){ wx.getLocation({ type: ‘gcj02‘, // 預設為wgs84的gps座標,如果要返回直接給openLocation用的火星座標,可傳入‘gcj02‘ success

金蝶BOS,客戶端,服務端,獲取當前組織使用者資訊

以下程式碼摘自於EAS客戶端前端程式碼,用於獲取當前登入使用者相應資訊。 @Override public void onLoad() throws Exception { // 得到當前組織的編號,通過客戶端上下文獲取 // 服務端要通過服務端的上下