(七十七)地理編碼與反地理編碼

2021-09-07 10:56:13 字數 1885 閱讀 1136

所謂地理編碼。指的是通過地名獲取位置資訊。比如經緯度、具體位址等。

所謂反地理編碼,指的是通過經緯度、海拔等資訊獲取地理位置資訊。

在ios上使用地理編碼和反地理編碼,假設是手動輸入經緯度,是不須要獲取使用者授權的,可是通常是獲取使用者的經緯度,然後再通過地理編碼實現精確定位,因此須要授權。本文由於是單獨解說地理編碼的相關知識,因此採用手動輸人經緯度。不再贅述授權的**。

①匯入框架:

#import

②新建clgeocoder物件:

@property (strong, nonatomic) clgeocoder *gcoder;
clgeocoder *coder = [[clgeocoder alloc] init];

self.gcoder = coder;

【地理編碼】

③呼叫物件的geocodeaddressstring:completionhandler方法。傳入乙個字串地名,返回的物件為地標陣列。

普通情況下。地標陣列中僅僅有乙個元素。通過firstobject或者lastobject得到乙個地標。

每乙個地標都有很多個屬性,列印乙個地標,能夠發現當中的屬性過於複雜,當中比較實用的屬性還是通過地標類clplacemark的標頭檔案,比較重要的列舉例如以下:

location:位置資訊。能夠得到經緯度、海拔等,上節有介紹。

city:城市名

name:完整地名

addressdictionary:這是乙個字典,資料例如以下

當中的formatteraddresslines是格式化的位址。圓括號表示的陣列,當中的元素是字串。

以下的**把經緯度和格式化的位址獲取並輸出。self開頭的那些成員屬性是textfield,用於顯示。

nsstring *addressstr = self.addressview.text;

if(addressstr == nil || addressstr.length == 0)

[self.gcoder geocodeaddressstring:addressstr completionhandler:^(nsarray *placemarks, nserror *error)

self.detailview.text = strm;

if (error)

}];

【反地理編碼】

④呼叫reversegeocodelocation方法,傳入乙個cllocation就可以,得到了仍然是地標,和前面一樣處理,須要注意的是,cllocation假設要輸入值,要在初始化時設定。由於經緯度、海拔等都是僅僅讀屬性,因此應當在初始化時賦值。以下的**通過獲取textfield獲取經緯度,然後反地理編碼得到位置資訊:

cllocationdegrees latitude = [self.latiview.text doublevalue];

cllocationdegrees longtitude = [self.longtiview.text doublevalue];

cllocation *location = [[cllocation alloc] initwithlatitude:latitude longitude:longtitude];

[self.gcoder reversegeocodelocation:location completionhandler:^(nsarray *placemarks, nserror *error)

self.detailview.text = strm;

}if (error)

}];

(七十七)地理編碼與反地理編碼

所謂地理編碼,指的是通過地名獲取位置資訊,例如經緯度 詳細位址等。所謂反地理編碼,指的是通過經緯度 海拔等資訊獲取地理位置資訊。在ios上使用地理編碼和反地理編碼,如果是手動輸入經緯度,是不需要獲取使用者授權的,但是一般是獲取使用者的經緯度,然後再通過地理編碼實現精確定位,因此需要授權,本文因為是單...

關於地理編碼與反地理編碼

clgeocoder 地理編碼器,其中geo是地理的英文單詞geography的簡寫。1.使用clgeocoder可以完成 地理編碼 和 反地理編碼 地理編碼 根據給定的地名,獲得具體的位置資訊 比如經緯度 位址的全稱等 反地理編碼 根據給定的經緯度,獲得具體的位置資訊 1 地理編碼方法 void ...

ios地理編碼 反地理編碼

1.地理編碼 給定乙個名字 北京 獲得給定名字對應的位置 經緯度 2反地理編碼 給定義個位置 經緯度 獲得這個位置對應的詳細資訊 國家 省 街道 樓 import viewcontroller.h import inte ce viewcontroller end implementation vi...