15.百度地图
2015-10-27 19:41
148 查看
旧SDK:旧key申请网页:http://developer.baidu.com/map/android-mobile-apply-key.htm添加jar包,可以直接将sample程序中的jar包拷进来用法:
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打开命令行,cd 到 .android目录下输入命令,路径根据自己电脑进行修改,C:\Users\lenovo\.android>"C:\Program Files\Java\jdk1.6.0_45\bin\keytool.exe" -list -v -keystore debug.keystore输入密码:android拷贝SHA1值,如:48:8C:D9:43:56:81:C4:10:10:40:B6:C3:0A:A1:84:A9:65:65:9A:5A安全码就是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.keystoreSHA1: 51:18:C7:9F:D3:9D:6E:85:F8:13:55:B2:18:7F:2E:C7:16:63:E7:40用法:在application中添加开发密钥
<application<meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="开发者 key" /></application>添加所需权限
<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" />布局文件中添加地图控件
<com.baidu.mapapi.map.MapViewandroid:id="@+id/id_bmapView"android:layout_width="fill_parent"android:layout_height="fill_parent"android:clickable="true" />在应用程序创建时初始化 SDK引用的Context 全局变量:
@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);// 在使用SDK各组件之前初始化context信息,传入ApplicationContext// 注意该方法要再setContentView方法之前实现SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);}不过地图很耗电,所以有必要管理其声明周期
public class MainActivity extends Activity{private MapView mMapView = null;@Overrideprotected 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);}@Overrideprotected void onDestroy(){super.onDestroy();// 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理mMapView.onDestroy();mMapView = null;}@Overrideprotected void onResume(){super.onResume();// 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理mMapView.onResume();}@Overrideprotected void onPause(){super.onPause();// 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理mMapView.onPause();}}更多介绍:http://blog.csdn.net/lmj623565791/article/details/37730469
相关文章推荐
- 从Unreal Engine 3到Unreal Engine 4
- 在win10中python3安装opencv3
- 基于曲线曲度或类曲度的角点检测方法总结
- 几张图看懂列式存储
- android 应用 kill ,restart ,重启,方法
- Oracle 10g在 WIN 10上 安装过程中遇到的问题记录
- 使用TCP从客户端上传图片到服务器端
- 不错的视频教程列表
- 栈与队列相互实现
- Leetcode -- Find Median from Data Stream
- springmvc 整合shiro
- 关于在android项目中使用fragment的个人经验
- Parallels Desktop 如何使用键盘快捷键
- php嵌套js and html
- maven常用命令
- Java中的IO流系统详解
- windows 下一个 easy_install 设备
- Looper和Handler的分析
- UIButton的一些属性和方法
- Android ViewDragHelper完全解析 自定义ViewGroup神器