百度地圖開發-顯示地圖默認介面 03

百度地圖開發-顯示地圖默認介面 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);         //衛星地圖

這個就是白色的底圖。

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

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

小寄語

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

原創不易,給個關注。

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