版本:BaiduSDK 2.12 (舊版本)(3.0以上版本由于昨天申請SDK總出問題以后再記錄)
首先,來到百度地圖API首頁:http://developer.baidu.com/map/
開發--->Android開發--->Android地圖SDK,點進去后,在左側有個導航欄,點擊 獲取密鑰,根據相關提示獲取key,開發中要用到,這里不過多講解。
點擊相關下載,下載最新的Android地圖SDK,解壓后獲得
往下看,點擊開發指南--->配置環境發布,找到Android Studio工程配置方法,根據提示進行操作(這里由于講的是舊版本2.12,與新版本略有差別,所以我截圖下來)。

之后把jar包加入到項目中


2個jar包都要加入,之后軟件會自動進行編譯,等待編譯結束后就可以開始使用了。
代碼部分:
(1)在布局中添加組件
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <com.baidu.mapapi.map.MapView android:id="@+id/mapView" android:layout_width="match_parent" android:layout_height="match_parent" /> <Button android:id="@+id/btn_main_open" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="打開軟鍵盤" android:onClick="click"/> </RelativeLayout>
(2)在配置文件中添加相關權限
<!-- gps --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- wifi --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 網絡的權限 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 離線包 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 獲取手機信息 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
(2)在MainActivity中編寫代碼
public class MainActivity extends AppCompatActivity {
/**
* 百度地圖的引擎(管理地圖)
*/
private BMapManager manager;
/**
* 顯示地圖信息的
*/
private MapView mapView;
/**
* 控制地圖的:縮放、平移、旋轉
*/
private MapController controller;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/**
* 加載布局之前,首先初始化地圖的引擎
*/
initManager();
setContentView(R.layout.activity_main);
/**
* 初始化布局中的mapView
*/
mapView = (MapView) findViewById(R.id.mapView);
/**
* 對控制器初始化
*/
controller = mapView.getController();
/**
* 這里設置初始級別為顯示第12級(1.0版本是3-18級別,2.0版本開始3-19個級別)
*/
controller.setZoom(19);
/**
* 這里設置默認顯示的中心地帶(比如:116.312741(經度),39.979111(緯度))
*/
controller.setCenter(new GeoPoint(39979111, 116312741));
}
private void initManager() {
manager = new BMapManager(this);
manager.init(ContentsUtils.KEY, new MKGeneralListener() {
/**
* 獲取網絡工作狀態
* @param isError 返回狀態
*/
@Override
public void onGetNetworkState(int isError) {
if (isError == MKEvent.ERROR_NETWORK_CONNECT) {
Toast.makeText(getApplicationContext(), "網絡連接出錯", Toast.LENGTH_SHORT).show();
}
}
/**
*獲取許可狀態
* @param isError 返回狀態
*/
@Override
public void onGetPermissionState(int isError) {
if (isError == MKEvent.ERROR_NETWORK_CONNECT) {
Toast.makeText(getApplicationContext(), "申請的key出錯了", Toast.LENGTH_SHORT).show();
}
}
});
}
/**
* 優化
*/
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
}
/**
* 優化
*/
@Override
protected void onPause() {
super.onPause();
mapView.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
/**
* 該Activity銷毀的時候,把地圖顯示的view也銷毀掉,有助于優化
*/
mapView.destroy();
}
/**
* 這里是根據按鍵做出相應操作
* @param keyCode
* @param event
* @return
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_1:
mapView.setSatellite(false);
mapView.setTraffic(false);
break;
case KeyEvent.KEYCODE_2:
mapView.setSatellite(true);
mapView.setTraffic(false);
break;
case KeyEvent.KEYCODE_3:
mapView.setSatellite(false);
mapView.setTraffic(true);
break;
default:
break;
}
return super.onKeyDown(keyCode, event);
}
/**
* 設置按鈕,控制軟鍵盤的打開與關閉
*
* @param view
*/
public void click(View view) {
Toast.makeText(MainActivity.this, "打開/關閉鍵盤", Toast.LENGTH_SHORT).show();
openInputMethod();
}
/**
* 調用軟鍵盤,打開/關閉
*/
public void openInputMethod() {
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
if (imm.isActive()) {
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
} else {
getSystemService(Context.INPUT_METHOD_SERVICE);
}
}
}說明:這里多加了一點功能,就是左上角加個按鈕,可以打開/關閉鍵盤,按鍵盤的1/2/3鍵,會分別顯示電子地圖/衛星地圖/實時交通。其他相關操作,代碼作了相應注釋。
運行效果圖:

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。