百度地圖開發-顯示地圖默認界面 03
百度地圖開發-顯示地圖默認界面 03
顯示地圖
上一期,我們成功導入百度地圖SDK,下來就需要驗證我們導入的SDK和配置的環境代碼是否正常,如果能在app上,顯示出默認的百度地圖界面,則證明導入和配置SDK成功,若不能顯示,則說明配置有問題,需要仔細檢查,看是否配置信息填寫有誤。
之前的文章已經申請了密鑰並在項目的AndroidManifest.xml文件中進行了配置,同時也添加了權限聲明。這裡的申明只是針對於舊版本設備(API低),新版本需要手動動態申請權限才可以,否則無法使用百度地圖相關服務。那麼接下來就編寫相關代碼,實現百度地圖默認地圖的顯示功能。
顯示默認地圖
當相關配置信息完成後,通過下面三步就可以顯示出百度地圖的默認地圖。
- 1、在布局文件中添加地圖容器
在你需要放置地圖的視圖中,添加地圖標籤,進行一些基本的設置,比如大小,間距等。
- 2、地圖初始化操作
這裡需要注意,下面兩行代碼,是在使用百度地圖前必須提前聲明的語句,因為它是作用是初始化百度地圖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); //衛星地圖
這個就是白色的底圖。
看到這裡,如何你按照上面的提示,仔細的操作,那麼也能順利的加載百度地圖到你的項目中去,那麼接下來就開始做一些簡單的業務比如根據網絡顯示當前的位置信息,在地圖上面標記點,繪製線,做標註,實現離線地圖等。
期待後面的推文吧,我會將學習百度地圖開發時踩的坑都分享出來,希望能幫助到後面需要使用百度地圖的朋友。
小寄語
人生短暫,我不想去追求自己看不見的,我只想抓住我能看的見的。
原創不易,給個關注。
我是阿輝,感謝您的閱讀,如果對你有幫助,麻煩點贊、轉發 謝謝。