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

Android 百度地圖 POI 搜索與定位整合:官方 Demo 可運行代碼參考

     編輯:程式設計綜合問答

需求

App 集成百度地圖 SDK,實現 POI 搜索(關鍵字/周邊/城市)與定位(GPS/網絡)功能,需可直接運行的參考代碼。

官方資源獲取

  1. SDK 下載:百度地圖 Android SDK 官網(含 Demo 源碼)
  2. Key 申請:控制台創建應用獲取 AK,配置 AndroidManifest.xml
  3. 權限配置:
    
    
    
    
    

核心實現要點

1. 地圖初始化


MapView mMapView = findViewById(R.id.mapView);
BaiduMap mBaiduMap = mMapView.getMap();
mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
mBaiduMap.setMyLocationEnabled(true); // 開啟定位圖層

2. 定位 SDK 配置


LocationClient mLocClient = new LocationClient(getApplicationContext());
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);
option.setCoorType("bd09ll"); // 百度經緯度
option.setScanSpan(1000);     // 1秒定位一次
mLocClient.setLocOption(option);
mLocClient.registerLocationListener(new MyLocationListener());
mLocClient.start();

3. POI 搜索


PoiSearch poiSearch = PoiSearch.newInstance();
poiSearch.setOnGetPoiSearchResultListener(new OnGetPoiSearchResultListener() {
    @Override
    public void onGetPoiResult(PoiResult result) {
        // result.getAllPoi() 獲取列表,更新 UI/覆蓋物
    }
    @Override
    public void onGetPoiDetailResult(PoiDetailResult result) { /* 單個詳情 */ }
});

// 城市內關鍵字搜索
poiSearch.searchInCity(new PoiCitySearchOption()
    .city("北京")
    .keyword("餐廳")
    .pageNum(10));

// 周邊搜索
poiSearch.searchNearby(new PoiNearbySearchOption()
    .location(new LatLng(lat, lng))
    .keyword("加油站")
    .radius(1000));

4. 定位結果疊加到地圖


class MyLocationListener implements BDLocationListener {
    @Override
    public void onReceiveLocation(BDLocation location) {
        MyLocationData data = new MyLocationData.Builder()
            .accuracy(location.getRadius())
            .direction(location.getDirection())
            .latitude(location.getLatitude())
            .longitude(location.getLongitude())
            .build();
        mBaiduMap.setMyLocationData(data);
        
        // 首次定位移動地圖中心
        if (isFirstLoc) {
            MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(
                new LatLng(location.getLatitude(), location.getLongitude()), 18);
            mBaiduMap.animateMapStatus(u);
            isFirstLoc = false;
        }
    }
}

完整可運行 Demo 參考

CSDN 博主整理版(含完整項目結構):Android 百度地圖 POI 搜索定位完整 Demo

常見坑點

問題解決
AK 驗證失敗包名/簽名與控制台不一致,Release/Debug 區分
定位失敗檢查權限、GPS 開啟、模擬器模擬位置
地圖白屏so 库架構匹配(arm64-v8a/armeabi-v7a),jniLibs 放置正確
POI 無結果關鍵字編碼、城市名稱標準化、配額限制

直接下載官方 SDK 附帶的 Demo 項目,導入 Android Studio,配置 AK 即可運行,是最權威的參考代碼。

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