iOS地址編碼解析

來源:互聯網
上載者:User

標籤:

- (void)viewDidLoad

{

    [super viewDidLoad];

// 建立位址解析器

self.geocoder = [[CLGeocoder alloc] init];

}

- (IBAction)encodeTapped:(id)sender

{

// 擷取使用者輸入的地址字串

NSString* addr = self.addrField.text;

if(addr != nil && addr.length > 0)

{

[self.geocoder geocodeAddressString:addr

completionHandler: ^(NSArray *placemarks, NSError *error)

{

// 如果解析結果的集合元素的個數大於1,表明解析得到了經度、緯度資訊

if (placemarks.count > 0)

{

// 只處理第一個解析結果,實際項目中可使用列表讓使用者選擇

CLPlacemark* placemark = placemarks[0];

CLLocation* location = placemark.location;

self.resultView.text = [NSString stringWithFormat:

@"%@的經度為:%g,緯度為:%g" , addr ,

location.coordinate.longitude ,

location.coordinate.latitude ];

}

// 沒有得到解析結果。

else

{

// 使用UIAlertView提醒使用者

[[[UIAlertView alloc] initWithTitle:@"提醒"

message:@"您輸入的地址無法解析" delegate:nil

cancelButtonTitle:@"確定" otherButtonTitles: nil]

show];

}

}];

}

}

- (IBAction)reverseTapped:(id)sender

{

NSString* longitudeStr = self.longitudeField.text;

NSString* latitudeStr = self.latitudeField.text;

if(longitudeStr != nil && longitudeStr.length > 0

  && latitudeStr != nil && latitudeStr.length > 0)

{

// 將使用者輸入的經度、緯度封裝成CLLocation對象

CLLocation* location = [[CLLocation alloc]

initWithLatitude:[latitudeStr floatValue]

longitude:[longitudeStr floatValue]];

        

[self.geocoder reverseGeocodeLocation:location completionHandler:

^(NSArray *placemarks, NSError *error)

{

// 如果解析結果的集合元素的個數大於1,表明解析得到了經度、緯度資訊

if (placemarks.count > 0)

{

// 只處理第一個解析結果,實際項目可使用列表讓使用者選擇

CLPlacemark* placemark = placemarks[0];

// 擷取詳細地址資訊

NSArray* addrArray = [placemark.addressDictionary

objectForKey:@"FormattedAddressLines"];

// 將詳細地址拼接成一個字串

NSMutableString* addr = [[NSMutableString alloc] init];

for(int i = 0 ; i < addrArray.count ; i ++)

{

[addr appendString:addrArray[i]];

}

self.resultView.text = [NSString stringWithFormat:

@"經度:%g,緯度:%g的地址為:%@" ,

location.coordinate.longitude ,

location.coordinate.latitude , addr];

}

// 沒有得到解析結果。

else

{

// 使用UIAlertView提醒使用者

[[[UIAlertView alloc] initWithTitle:@"提醒"

message:@"您輸入的地址無法解析" delegate:nil

cancelButtonTitle:@"確定" otherButtonTitles: nil]

show];

}

}];

}

}

iOS地址編碼解析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.