需求:雙用戶 App,獲取對方地址信息並標記在各自百度地圖上。
BDAbstractLocationListener)。GeoCoder.reverseGeoCode)。BaiduMap.addOverlay)。// 1. 獲取自己位置
LocationClient client = new LocationClient(context);
client.registerLocationListener(new BDAbstractLocationListener() {
@Override
public void onReceiveLocation(BDLocation location) {
double lat = location.getLatitude();
double lon = location.getLongitude();
String addr = location.getAddrStr(); // 逆地理編碼結果
// 2. 發送給對方 (通過 IM 通道)
imClient.send(new LocationMessage(lat, lon, addr, userId));
}
});
client.start();
// 3. 接收對方位置並標記
imClient.setMessageListener(msg -> {
if (msg instanceof LocationMessage) {
LocationMessage lm = (LocationMessage) msg;
// 4. 在地圖添加/更新 Marker
LatLng pt = new LatLng(lm.lat, lm.lon);
MarkerOptions oo = new MarkerOptions().position(pt).title(lm.addr);
baiduMap.addOverlay(oo); // 或更新現有 Marker position
baiduMap.setMapStatus(MapStatusUpdateFactory.newLatLngZoom(pt, 16));
}
});
LocationClient / BDAbstractLocationListener:定位。GeoCoder:逆地理編碼 (可選,定位 SDK 已返回地址)。BaiduMap.addOverlay(MarkerOptions):標記。MapStatusUpdateFactory:移動鏡頭。AndroidManifest.xml 權限 (ACCESS_FINE_LOCATION, INTERNET)。參考百度地圖官方開發指南《Android 定位 SDK》與《地圖 SDK 覆蓋物》章節,可快速落地。