Android 地理編碼

2021-06-21 15:01:26 字數 1601 閱讀 8672

地理編碼可以在街道位址和經緯度地圖座標之間進行轉換。這樣就可以為基於位置的服務和基於地圖的activity中所用的位置或者座標提供乙個可識別的上下文。

geocoder類包含在google maps庫中,所以要使用geocoder類,就必須把該庫匯入到應用程式中:

地理編碼查詢是在伺服器上進行的:

geocoder類提供了兩種地理編碼函式:

1.forward geocoding(前向地理編碼) 查詢某個位址的經緯度。

2.reverse geocoding(反向地理編碼) 查詢乙個給定的經緯度所對應的街道位址。

這些呼叫返回的結果將會放到乙個區域(用來定義你常駐位置和所用語言)中。如果沒有指定區域設定,那麼它將會被假定為裝置預設的區域設定。

這兩種地理編碼函式返回的都是address物件列表,每乙個列表都可以包含多個可能的結果,在呼叫函式時可以指定結果的最大數量。

geocoder使用乙個web服務來實現有些android裝置可能不支援的查詢。android 2.3(api level 9)引入了ispresent方法來確定指定的裝置上是否存在ceocoder實現:

boolean geocoderexists = geocoder.ispresent();

一.反向地理編碼

反向地理編碼可以返回由經度和緯度指定的物理位置的街道位址。

要執行反向查詢,需要向地理編碼器物件的getfromlocation方法傳入目標緯度和經度。它會返回乙個可能匹配的位址的列表。如果對於指定的座標,地理編碼器不能解析出任何位址,那麼它將會返回null。

private void reversegeocode(location location)  catch (ioexception e) 

}

二.前向地理編碼

前向地理編碼可以確定乙個給定位置的地圖座標。

listresults = gc.getfromlocationname(streetaddress, maxresults);

在進行前向查詢的過程中,例項化geocoder物件時所指定的locale物件尤其重要。locale提供了解釋搜尋請求的地理上下文,因為多個區域可能存在相同的位置名稱。

geocoder fwdgeocoder = new geocoder(this, locale.us);

string streetaddress = "160 riverside drive, new york, new york";

listlocations = null;

try catch (ioexception e)

為了得到更具體的結果,可以指定左下方和右上方的緯度和經度值,從而把搜尋限制在乙個地理邊界範圍內:

listlocations = null;

try catch (ioexception e)

ios地理編碼 反地理編碼

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

CLGeocoder地理編碼與逆地理編碼

使用clgeocoder可以完成 地理編碼 和 逆地理編碼 地理編碼 根據給定的地名,獲得具體的位置資訊 比如經緯度 位址的全稱等 逆地理編碼 根據給定的經緯度,獲得具體的位置資訊 地理編碼方法 void geocodeaddressstring nsstring addressstring com...

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

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