本博客转自http://blog.csdn.net/to_be_designer/article/details/48662227
同时参考了http://blog.csdn.net/kezhongke/article/details/42678077
- 先上效果图
- 这里实现了简单的地图显示,同时自带了放大和缩小按键,下面我们就来看如何实现的吧。
如何获得BaiduMap SDK
要使用百度地图,首先我们要获得baidu的Sdk,那么如何去获得呢?首先你要先有一个Baidu的账号,这里胡藏剑账号不再描述。如何equest获取Baidu地图开发工具,看下面步骤:
1. 首先进入百度地图API的官网。
- 点击“开发——>百度地图SDK”。
点击右侧边框中的“相关下载”,然后点击”一键下载”。这样会将百度地图的SDK,示例等一块下载下来。
这样我们就获得了Baidu地图开发的相关工具了。
如何使用BaiduMap
百度其实已经为我们提供了帮助文档,可以通过点击右侧边框中的开发指南来获得Baidu地图的使用帮助:
在开发指南中我们首先可以阅读简介来了解Baidu SDK的基本功能,然后可以申请秘钥, 申请秘钥之后配置开发环境。然后通过提供的Hello BaiduMap使用示例来讲解Baidu 地图的基本使用。然后可以通过逐步的阅读,构建自己应用中Map的功能。
获取我们自己的SHA1
- 百度地图开发申请KEY的时候需要开发者提供SHA1证书指纹数据,在eclipse很容易就找到了,但是Android Studio很久也没找到,只能使用在网上看到的方法了,在Android Studio中的Terminal中使用keytool获取了,具体如下图所示(输入密钥库口令–测试的默认口令为:android,如果使用自己提供的keystore,就是自己的密码了):
让Map显示出来
基本的配置可以参照Baidu “开发指南”上的说明文档,这里就不过多的涉及了。
添加权限。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
在布局xml文件中添加地图控件。
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
在应用程序创建时初始化 SDK引用的Context 全局变量,并创建地图Activity,管理地图生命周期。
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private MapView mapView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//使用BaiduMap SDK
//在使用SDK个组件之前初始化context信息,传入ApplicationContext
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
init();
}
private void init() {
mapView= (MapView) findViewById(R.id.mapView);
}
@Override
protected void onDestroy() {
super.onDestroy();
//在activity执行onDestroy时执行mapView.onDestroy(),实现地图生命周期管理
mapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
//同上
mapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
//同上
mapView.onPause();
}
}