百度地圖開發-顯示地圖預設介面 03

—阿輝發表於2021-08-27

百度地圖開發-顯示地圖預設介面 03

顯示地圖

上一期,我們成功匯入百度地圖SDK,下來就需要驗證我們匯入的SDK和配置的環境程式碼是否正常,如果能在app上,顯示出預設的百度地圖介面,則證明匯入和配置SDK成功,若不能顯示,則說明配置有問題,需要仔細檢查,看是否配置資訊填寫有誤。

之前的文章已經申請了金鑰並在專案的AndroidManifest.xml檔案中進行了配置,同時也新增了許可權宣告。這裡的申明只是針對於舊版本裝置(API低),新版本需要手動動態申請許可權才可以,否則無法使用百度地圖相關服務。那麼接下來就編寫相關程式碼,實現百度地圖預設地圖的顯示功能。

顯示預設地圖

當相關配置資訊完成後,通過下面三步就可以顯示出百度地圖的預設地圖。

  • 1、在佈局檔案中新增地圖容器

在你需要放置地圖的檢視中,新增地圖示籤,進行一些基本的設定,比如大小,間距等。

  • 2、地圖初始化操作

這裡需要注意,下面兩行程式碼,是在使用百度地圖前必須提前宣告的語句,因為它是作用是初始化百度地圖SDK,如果不宣告或者宣告的地方不對,則後期百度地圖無法成功載入。【我在這裡就吃過虧,順序寫反了,一直除錯不出來哪裡出錯了。】

初始化百度地圖SDK

這兩句程式碼,必須放在MainActivity的onCreate()方法中,在第一行進行宣告,它們是進行百度地圖SDK的初始化操作,第一個是傳遞上下文到SDK中,第二個設設定其SDK內部的座標格式,預設為BD09LL座標。(切莫將這兩句放在程式剛開始執行的地方,否則後續無法使用百度地圖)。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //初始化地圖SDK
        //在使用SDK各元件之前初始化context資訊,傳入ApplicationContext
        SDKInitializer.initialize(getApplicationContext());
        //自4.3.0起,百度地圖SDK所有介面均支援百度座標和國測局座標,用此方法設定您使用的座標型別.
        //包括BD09LL和GCJ02兩種座標,預設是BD09LL座標。
        SDKInitializer.setCoordType(CoordType.BD09LL);

        setContentView(R.layout.activity_main);
    }

上面程式碼就是在這個測試專案中放置的位置。

  • 3、建立地圖Activity,管理其生命週期

在新建的testandroid工程中,在檢視介面,建立MAP顯示,接著在後臺程式碼宣告並定義Map的宣告週期。其中需要注意的是,需要先進行初始化操作,其實需要動態申請訪問許可,比如定位,儲存卡等。

public class MainActivity extends AppCompatActivity {

    private MapView mMapView = null;

    private BaiduMap mBaiduMap=null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //初始話地圖SDK
        //在使用SDK各元件之前初始化context資訊,傳入ApplicationContext
        SDKInitializer.initialize(getApplicationContext());
        //自4.3.0起,百度地圖SDK所有介面均支援百度座標和國測局座標,用此方法設定您使用的座標型別.
        //包括BD09LL和GCJ02兩種座標,預設是BD09LL座標。
        SDKInitializer.setCoordType(CoordType.BD09LL);

        setContentView(R.layout.activity_main);
        //動態許可權訪問
        SetPermissionVerify();
        mMapView = (MapView) findViewById(R.id.map_view);
    }

    /**
     * 動態許可權驗證模組
     * 包括訪問GPS,呼叫儲存卡
     * */
    private void SetPermissionVerify(){
        List<String> permissionList=new ArrayList<>();
        // 獲取位置資訊
        if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED){
            permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
        }
        //獲取手機狀態
        if(ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.READ_PHONE_STATE)!=PackageManager.PERMISSION_GRANTED) {//表示未授權
            // 申請一個(或多個)許可權,並提供用於回撥返回的獲取碼(使用者定義)
            permissionList.add(Manifest.permission.READ_PHONE_STATE);
        }
        if(ContextCompat.checkSelfPermission(getApplicationContext(),Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
            permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
        }
        if(!permissionList.isEmpty()){
            String[] permissions=permissionList.toArray(new String[permissionList.size()]);
            ActivityCompat.requestPermissions(this,permissions,1);
        }else {
            //StartRequestLocation();
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        mMapView.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mMapView.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mMapView.onDestroy();
    }
}

當編寫完成後就允許程式,可以在手機APP上看到百度地圖的初始介面,以北京天安門為中心的預設圖。

執行成功的介面

看到這個介面,就證明目前執行成功了。

說明申請金鑰成功,引入SDK成功,配置其環境變數成功,可以正常使用百度地圖的所有功能了。

切換地圖型別

百度地圖預設顯示常規地圖,可以通過程式碼來調節地圖的顯示型別,這裡總共有3種,分別是普通地圖、衛星圖、空白地圖。

可以通過BaiduMap中的setMapType()方法來設定地圖型別。

  • 普通地圖
        mBaiduMap=mMapView.getMap();
        mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);         //普通地圖

這就是普通地圖,也就是我們平時開啟地圖軟體看到的預設顯示地圖。

  • 衛星圖
        mBaiduMap=mMapView.getMap();
        mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);         //衛星地圖

  • 空白地圖
        mBaiduMap=mMapView.getMap();
        mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NONE);         //衛星地圖

這個就是白色的底圖。

看到這裡,如何你按照上面的提示,仔細的操作,那麼也能順利的載入百度地圖到你的專案中去,那麼接下來就開始做一些簡單的業務比如根據網路顯示當前的位置資訊,在地圖上面標記點,繪製線,做標註,實現離線地圖等。

期待後面的推文吧,我會將學習百度地圖開發時踩的坑都分享出來,希望能幫助到後面需要使用百度地圖的朋友。

小寄語

人生短暫,我不想去追求自己看不見的,我只想抓住我能看的見的。

原創不易,給個關注。

我是阿輝,感謝您的閱讀,如果對你有幫助,麻煩點贊、轉發 謝謝。

相關文章