前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >15.百度地图

15.百度地图

作者头像
六月的雨
发布2018-05-14 10:47:27
7130
发布2018-05-14 10:47:27
举报
文章被收录于专栏:Android开发指南Android开发指南

旧SDK:

旧key申请网页:http://developer.baidu.com/map/android-mobile-apply-key.htm

添加jar包,可以直接将sample程序中的jar包拷进来

用法:

  1. public interface ConstantValue { String KEY = "1A4A4ABEFBEECD8C17DEE880C4EA69B9607020B5"; } <com.baidu.mapapi.map.MapView android:id="@+id/mapview" android:layout_width="wrap_content" android:layout_height="wrap_content"/> public class HelloWorld extends Activity { private static final String TAG = "HelloWorld"; private BMapManager manager; private MapView mapView; private MapController controller; int latitude = (int) (40.051 * 1E6);// 纬度 int longitude = (int) (116.303 * 1E6);// 经度 GeoPoint hmPos = new GeoPoint(latitude, longitude);// 黑马 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 校验KEY initManager(); setContentView(R.layout.common); // 设置地图的缩放级别(V2.X3,19 V1.X 3,18) // V2.X与V1.X 主要区别 // ①修改了地图文件的格式,优化了地图(110 15) // ②增加了级别,3D(18,19) // MapController 管理具体的某一个Mapview:旋转、缩放、移动 mapView = (MapView) findViewById(R.id.mapview); controller = mapView.getController(); controller.setZoom(12);// 设置地图的缩放级别。 这个值的取值范围是[3,19] // 在mapview上添加一组缩放按钮 // mapview.add(view) mapView.setBuiltInZoomControls(true); controller.setCenter(hmPos);// 坐标 经纬度 } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // 旋转、缩放、移动 switch (keyCode) { case KeyEvent.KEYCODE_1: // 放大 controller.zoomIn();// 一次放大一个级别 break; case KeyEvent.KEYCODE_2: // 缩小 controller.zoomOut(); break; case KeyEvent.KEYCODE_3: // 以一个点为中心旋转 int rotation = mapView.getMapRotation();// 获取当前的角度 Log.d(TAG, "rotation="+ rotation);// -180~180 controller.setRotation(rotation+30); break; case KeyEvent.KEYCODE_4: // 以一条直线为轴 旋转 俯角(overlooking) int overlooking = mapView.getMapOverlooking(); Log.d(TAG, "overlooking=" + overlooking);// -45~0 controller.setOverlooking(overlooking-5); break; case KeyEvent.KEYCODE_5: // 移动 controller.animateTo(new GeoPoint(40065796,116349868)); break; default: break; } return super.onKeyDown(keyCode, event); } private void initManager() { manager = new BMapManager(getApplicationContext()); /** * public boolean init(String strKey, MKGeneralListener listener) 参数: * strKey - 申请的授权验证码(null,"") listener - 注册回调事件 该接口返回网络状态,授权验证结果 */ manager.init(ConstantValue.KEY, new MKGeneralListener() { // MKEvent @Override public void onGetPermissionState(int iError) { // 授权验证 if (iError == MKEvent.ERROR_PERMISSION_DENIED) { Toast.makeText(getApplicationContext(), "验证失败", 0).show(); } } @Override public void onGetNetworkState(int iError) { // 网络状态 if (iError == MKEvent.ERROR_NETWORK_CONNECT) { Toast.makeText(getApplicationContext(), "无网络", 0).show(); } } }); } @Override protected void onResume() { mapView.onResume(); super.onResume(); } @Override protected void onPause() { mapView.onPause(); super.onPause(); } @Override protected void onDestroy() { mapView.destroy(); super.onDestroy(); } }

新SDK:

申请新key

  1. 打开命令行,cd 到 .android目录下
  2. 输入命令,路径根据自己电脑进行修改,C:\Users\lenovo\.android>"C:\Program Files\Java\jdk1.6.0_45\bin\keytool.exe" -list -v -keystore debug.keystore
  3. 输入密码:android
  4. 拷贝SHA1值,如:48:8C:D9:43:56:81:C4:10:10:40:B6:C3:0A:A1:84:A9:65:65:9A:5A
  5. 安全码就是SHA1值+“;”+packagename(即:数字签名+分号+包名),分号必须是英文的,包名是AndroidManifest.xml里面的package值

如:48:8C:D9:43:56:81:C4:10:10:40:B6:C3:0A:A1:84:A9:65:65:9A:5A;cn.itheima.bdmaphm36

我的

"D:\jdk\bin\keytool.exe" -list -v -keystore debug.keystore

 SHA1: 51:18:C7:9F:D3:9D:6E:85:F8:13:55:B2:18:7F:2E:C7:16:63:E7:40

用法:

在application中添加开发密钥

  1. <application <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="开发者 key" /> </application>

添加所需权限

  1. <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.USE_CREDENTIALS" /> <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" /> <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" /> <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.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />

布局文件中添加地图控件

代码语言:javascript
复制
<com.baidu.mapapi.map.MapView
android:id="@+id/id_bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />

在应用程序创建时初始化 SDK引用的Context 全局变量:

  1. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); // 在使用SDK各组件之前初始化context信息,传入ApplicationContext // 注意该方法要再setContentView方法之前实现 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); }

不过地图很耗电,所以有必要管理其声明周期

代码语言:javascript
复制
public class MainActivity extends Activity
{
	private MapView mMapView = null;
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		// 在使用SDK各组件之前初始化context信息,传入ApplicationContext
		// 注意该方法要再setContentView方法之前实现
		SDKInitializer.initialize(getApplicationContext());
		setContentView(R.layout.activity_main);
		// 获取地图控件引用
		mMapView = (MapView) findViewById(R.id.id_bmapView);
	}
	@Override
	protected void onDestroy()
	{
		super.onDestroy();
		// 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
		mMapView.onDestroy();
		mMapView = null;
	}
	@Override
	protected void onResume()
	{
		super.onResume();
		// 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
		mMapView.onResume();
	}
	@Override
	protected void onPause()
	{
		super.onPause();
		// 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
		mMapView.onPause();
	}
}

更多介绍:http://blog.csdn.net/lmj623565791/article/details/37730469

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-10-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档