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

2021-07-03 22:57:12 字數 1882 閱讀 6999

所謂地理編碼,指的是通過地名獲取位置資訊,例如經緯度、詳細位址等。

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

在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...