首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

百度地圖 API:定位後自動縮放至指定比例尺(100米級)

     編輯:C++ 入門

問題場景

百度地圖 SDK 定位成功後,默認縮放級別對應 5 公里範圍,過大不適合精確展示。需在定位回調中強制設置縮放級別至 100 米左右。

解決方案

利用 MapStatusUpdateFactory.newLatLngZoom(LatLng, zoom) 設置中心點與縮放級別。getMaxZoomLevel() 返回最大級別(19,約 20 米),減去 2 即約 100 米。

核心代碼片段

public void onReceiveLocation(BDLocation location) {
    if (location == null || mMapView == null) return;
    // 構建定位數據
    MyLocationData locData = new MyLocationData.Builder()
        .accuracy(location.getRadius())
        .direction(100)
        .latitude(location.getLatitude())
        .longitude(location.getLongitude())
        .build();
    mBaiduMap.setMyLocationData(locData);

    LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
    float maxZoom = mBaiduMap.getMaxZoomLevel(); // 19.0
    MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, maxZoom - 2); // 目標級別 ~17
    mBaiduMap.animateMapStatus(u); // 帶動畫平滑移動
}

關鍵 API 說明

  • getMaxZoomLevel():最大縮放級別(最細節),對應約 20 米。
  • getMinZoomLevel():最小縮放級別(最廣域),對應約 1000 公里。
  • newLatLngZoom:同時設置中心點與縮放級別。
  • animateMapStatus:動畫過渡,體驗優於 setMapStatus。

效果驗證

定位後地圖自動聚焦到約 100 米範圍,街道、建築物清晰可見,滿足精確展示需求。

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