作者:黑鸽子 | 来源:互联网 | 2023-10-12 19:54
版本:BaiduSDK2.12(旧版本)(3.0以上版本由于昨天申请SDK总出问题以后再记录)首先,来到百度地图API首页:http:developer.baidu.commap开发--
版本: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)在布局中添加组件
(2)在配置文件中添加相关权限
(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键,会分别显示电子地图/卫星地图/实时交通。其他相关操作,代码作了相应注释。
运行效果图: