生活随笔
收集整理的這篇文章主要介紹了
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ò),歡迎將生活随笔推薦給好友。