日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

iOS开发:通过经纬度获得城市、省份等信息

發(fā)布時(shí)間:2023/12/10 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS开发:通过经纬度获得城市、省份等信息 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

????????iOS系統(tǒng)自帶定位,用CLLocationManager就可以輕松的實(shí)現(xiàn)定位的操作,獲得的是一組經(jīng)緯度,當(dāng)然,也可以根據(jù)給出的經(jīng)緯度獲取相應(yīng)的省份、城市、街道等信息,下面就看一個(gè)根據(jù)經(jīng)緯度獲得城市的demo:


????????因?yàn)楂@取經(jīng)緯度需要CLLocationManager類(lèi),而這個(gè)類(lèi)包含在CoreLocation框架中,獲取城市信息需要mapKit框架,所以需要首先在工程中導(dǎo)入這兩個(gè)框架:

導(dǎo)入框架的步驟:選擇1.target——2.Build Phases——3.Link Binary With Libraries ——4.點(diǎn)擊“+”號(hào):如圖所示步驟:


點(diǎn)擊加號(hào)之后在搜索框里輸入相應(yīng)的框架,即可搜索到,如圖所示:


下面就該寫(xiě)代碼了,首先在視圖控制器中導(dǎo)入:

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

兩個(gè)頭文件,然后.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];//創(chuàng)建CLLocationManager對(duì)象self.locationManager?=?[[CLLocationManager?alloc]?init];//設(shè)置代理為自己self.locationManager.delegate?=?self;} -?(IBAction)locationButton:(UIButton?*)sender?{[self.locationManager?startUpdatingLocation]; }-?(void)locationManager:(CLLocationManager?*)managerdidUpdateToLocation:(CLLocation?*)newLocationfromLocation:(CLLocation?*)oldLocation {//將經(jīng)度顯示到label上self.longitude.text?=?[NSString?stringWithFormat:@"%lf",?newLocation.coordinate.longitude];//將緯度現(xiàn)實(shí)到label上self.latitude.text?=?[NSString?stringWithFormat:@"%lf",?newLocation.coordinate.latitude];//?獲取當(dāng)前所在的城市名CLGeocoder?*geocoder?=?[[CLGeocoder?alloc]?init];//根據(jù)經(jīng)緯度反向地理編譯出地址信息[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)?{//四大直轄市的城市信息無(wú)法通過(guò)locality獲得,只能通過(guò)獲取省份的方法來(lái)獲得(如果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);}}];//系統(tǒng)會(huì)一直更新數(shù)據(jù),直到選擇停止更新,因?yàn)槲覀冎恍枰@得一次經(jīng)緯度即可,所以獲取之后就停止更新[manager?stopUpdatingLocation]; }


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

-?(void)locationManager:(CLLocationManager?*)managerdidUpdateLocations:(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


完整的工程如下:

附件下載地址:https://github.com/winann/TestLocation.git


轉(zhuǎn)載于:https://blog.51cto.com/winann/1532528

總結(jié)

以上是生活随笔為你收集整理的iOS开发:通过经纬度获得城市、省份等信息的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。