首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android 反向地理編碼實戰:百度 LBS API 與 Google API 完整接入指南

     編輯:程式設計疑難解答

核心需求

已獲取經緯度(如 GPS 定位),需轉換為可讀地址(省/市/區/街道/POI)。

方案一:百度地圖 LBS API(國內首選)

  1. 申請 AK:百度地圖開放平台創建應用獲取 AK(密鑰)。
  2. 引入 SDK:Gradle 依賴 com.baidu.mapapi:map-sdk:7.5.0+ 或下載 Jar/So 庫。
  3. 核心代碼:
    
    // 初始化(Application 中)
    SDKInitializer.initialize(getApplicationContext());
    
    // 反地理編碼請求
    GeoCoder geoCoder = GeoCoder.newInstance();
    geoCoder.setOnGetGeoCodeResultListener(new OnGetGeoCodeResultListener() {
        @Override
        public void onGetReverseGeoCodeResult(ReverseGeoCodeResult result) {
            if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) return;
            String address = result.getAddress();      // 詳細地址
            String business = result.getBusiness();    // 商圈
            List<PoiInfo> pois = result.getPoiList();  // 周邊 POI
            // 更新 UI...
        }
    });
    // 發起請求
    geoCoder.reverseGeoCode(new ReverseGeoCodeOption().location(new LatLng(lat, lon)));
    

方案二:Google Geocoding API(需科學上網)

// HTTP GET 請求
String url = "https://maps.googleapis.com/maps/api/geocode/json?latlng=" + lat + "," + lon + "&key=YOUR_API_KEY&language=zh-CN";
// 解析 JSON:results[0].formatted_address 即為地址

⚠️ 國內直連不可用,需服務端代理或用戶端代理。

方案三:高德/騰訊地圖 SDK(備選)

接入方式與百度類似,申請 Key → 引入 SDK → 調用 GeocodeSearch / ReverseGeocoding 接口。

選型建議

方案優勢適用場景
百度 LBS國內數據最全、無需代理、SDK 功能豐富國內面向大眾的 App
Google API國際化支持佳、REST 介面無 SDK 體積出海應用、服務端聚合
高德/騰訊特定領域(如導航、打車)數據更強垂直領域應用

建議優先接入百度 SDK,集成簡單、離線緩存、坐標轉換(GCJ02/BD09)一站式解決。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved