經緯度是確定每個地點位置的精確坐標,使用坐標描述一個位置,非常準確但是並不直觀,面向用戶表達並不友好。HMS Core定位服務提供了逆地理編碼功能,可以通過緯度獲取附近地點的詳細地址,將坐標轉化為地理描述。例如,在電商App的地圖裡標定一個點,就可以顯示具體位置;打車、外賣App里拖動地圖或者點擊地 ...
經緯度是確定每個地點位置的精確坐標,使用坐標描述一個位置,非常準確但是並不直觀,面向用戶表達並不友好。HMS Core定位服務提供了逆地理編碼功能,可以通過緯度獲取附近地點的詳細地址,將坐標轉化為地理描述。例如,在電商App的地圖裡標定一個點,就可以顯示具體位置;打車、外賣App里拖動地圖或者點擊地圖上的某一點,定位標能夠選擇附近合適的上車地址或者外賣地址;在物流配送App中,需要很精確直觀的描述物流車輛所在的線路以及物流配送點,使用逆地理編碼功能通過回傳的經緯度坐標,來確認車輛位置。
HMS Core定位服務逆地理編碼功能擁有強大的地址理解能力,使用更加本地化位置的表達方式,準確率高達90%,支持79種語言,低至200ms的時延。
Demo演示
開發步驟
集成準備
註冊成為開發者
在開發應用前需要在華為開發者聯盟網站上註冊成為開發者並完成實名認證,具體方法請參見帳號註冊認證。
創建應用
生成並配置簽名證書指紋
簽名證書指紋用於校驗應用的真實性,您需要根據簽名證書在本地生成簽名證書指紋,併在應用上架前將簽名證書指紋配置到AppGallery Connect。
具體操作步驟見官網。
集成SDK
針對Android Studio開發環境,華為提供了Maven倉集成方式的SDK包。在開始開發前,您需要將SDK集成到您的Android Studio開發環境中。
具體操作步驟見官網。
開發步驟
1. 創建地理編碼服務客戶端
在您的項目中使用到地理編碼服務的GeocoderActivity中的onClick()方法中創建一個GeocoderService實例,通過該實例調用地理編碼相關介面。
Locale locale = new Locale("zh", "CN");
GeocoderService geocoderService = LocationServices.getGeocoderService(GeocoderActivity.this, locale);
2. 獲取逆地理編碼信息
如果您希望應用獲取逆地理編碼信息,可以使用定位服務中的GeocoderService對象提供的getFromLocation()介面。該介面會根據您設置的GetFromLocationRequest請求信息返回一個包含位置信息的List<HWLocation>對象。
2.1. 設置逆地理編碼請求參數。
// 參數一:緯度
// 參數二:經度
// 參數三:返回結果最大數量
// 請傳入合理的地區經緯度,否則沒有相關地理信息返回。如果是非中國地區,請傳入非中國地區的經緯度,且確保經緯度是準確的。
GetFromLocationRequest getFromLocationRequest = new GetFromLocationRequest(39.985071, 116.501717, 5);
2.2. 調用getFromLocation()介面,獲取逆地理編碼信息。
private void getReverseGeocoding() {
//初始化GeocoderService對象
if (geocoderService == null) {
geocoderService = new GeocoderService(this, new Locale("zh", "CN"));
}
geocoderService.getFromLocation(getFromLocationRequest)
.addOnSuccessListener(new OnSuccessListener<List<HWLocation>>() {
@Override
public void onSuccess(List<HWLocation> hwLocation) {
// TODO:介面調用成功的處理
if (null != hwLocation && hwLocation.size() > 0) {
Log.d(TAG, "hwLocation數據集數量: " + hwLocation.size());
Log.d(TAG, "CountryName: " + hwLocation.get(0).getCountryName());
Log.d(TAG, "City: " + hwLocation.get(0).getCity());
Log.d(TAG, "Street: " + hwLocation.get(0).getStreet());
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
// TODO:介面調用失敗的處理
}
});
}
2.3. Log日誌為:
瞭解更多詳情>>
訪問華為開發者聯盟官網
獲取開髮指導文檔
華為移動服務開源倉庫地址:GitHub、Gitee
關註我們,第一時間瞭解 HMS Core 最新技術資訊~