已獲取經緯度(如 GPS 定位),需轉換為可讀地址(省/市/區/街道/POI)。
com.baidu.mapapi:map-sdk:7.5.0+ 或下載 Jar/So 庫。
// 初始化(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)));
// 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 即為地址
⚠️ 國內直連不可用,需服務端代理或用戶端代理。
接入方式與百度類似,申請 Key → 引入 SDK → 調用 GeocodeSearch / ReverseGeocoding 接口。
| 方案 | 優勢 | 適用場景 |
|---|---|---|
| 百度 LBS | 國內數據最全、無需代理、SDK 功能豐富 | 國內面向大眾的 App |
| Google API | 國際化支持佳、REST 介面無 SDK 體積 | 出海應用、服務端聚合 |
| 高德/騰訊 | 特定領域(如導航、打車)數據更強 | 垂直領域應用 |
建議優先接入百度 SDK,集成簡單、離線緩存、坐標轉換(GCJ02/BD09)一站式解決。