在自己的Android项目中增加百度地图的功能。



一 申请API key

  • 在使用百度地图之前,我们必须去申请一个百度地图的API key,申请地址http://lbsyun.baidu.com/apiconsole/key,自己自行注冊一个百度账号。非常快就能申请到的,例如以下图

  • 点击"创建密钥"。系统将为我们自己主动生成密钥,当然我们在使用密钥之前还必须配置。点击"设置"例如以下图

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhYW5taW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" style="border:none; max-width:100%">

Key type 选择“for mobile”,安全码是Android签名证书的证书指纹 (SHA1)值 + “;” + 你的应用程序包名,所以当你配置好了API key 你不能任意更换应用程序的包名, 假设更换了包名我们须要又一次配置API key,接下来我们来介绍怎么获取数字签名

我们知道我们开发的Android程序是须要给他签名的,假设没有签名是不同意被安装到手机或者模拟器的,那么你会有疑问,我寻常开发的应用确实没签名,怎么能在模拟器或者手机上直接执行呢,事实上ADT会自己主动的使用debug密钥为应用程序签名,当然你也能够自己创建一个属于你自己的密钥,直接用Eclipse可视化创建即可了。非常方便的,这里我就不介绍了

  • 这里我们用debug.keystore来生成Android签名证书的证书指纹 (SHA1)值,能够在eclipse中直接查看:winows
    -> preferance -> android -> build。 例如以下图示:

然后我们使用keytool工具来获取签名证书的sha1值,在DOS输入keytool -list -keystore C:\Users\bds\.android\debug.keystore红色部分为debug.keystore的路径。接下来会要你输入输入密钥库口令,默认输入“android”,这样子我们就能获取证书指纹
(SHA1)。例如以下图

红色框框里面的东西就是我们须要的Android签名证书的证书指纹 (SHA1)值,然后我们复制出来,输入到API key的安全码输入框里面,再用分号隔开加上你的应用程序包名,如  02:5C:80:25:B2:8F:6F:60:54:B9:F4:B2:EF:94:FF:EE:CC:3C:5A:29;com.example.baidumapdemo 这样子我们就配置好了API
key

二、下载百度地图API库

要在Android应用中使用百度地图API,就须要在project中引用百度地图API开发包,下载地址http://developer.baidu.com/map/sdkandev-download.htm,下载Android
SDKv2.1.3 lib库
即可了

三、在Android项目中引用百度地图

  • 新建Android项目 BaiduMapDemo,然后将百度地图API库增加project,例如以下图

  • 在布局文件里加入百度地图控件,
[html] view
plain
copy

  1. <?xml version="1.0" encoding="utf-8"?

    >

  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <com.baidu.mapapi.map.MapView
  7. android:id="@+id/bmapView"
  8. android:layout_width="fill_parent"
  9. android:layout_height="fill_parent"
  10. android:clickable="true" />
  11. </LinearLayout>
  • Activity界面代码。凝视的非常具体,相信你看得懂
[java] view
plain
copy

  1. package com.example.baidumapdemo;
  2. import android.app.Activity;
  3. import android.graphics.Bitmap;
  4. import android.os.Bundle;
  5. import android.widget.Toast;
  6. import com.baidu.mapapi.BMapManager;
  7. import com.baidu.mapapi.MKGeneralListener;
  8. import com.baidu.mapapi.map.MKEvent;
  9. import com.baidu.mapapi.map.MKMapViewListener;
  10. import com.baidu.mapapi.map.MapController;
  11. import com.baidu.mapapi.map.MapPoi;
  12. import com.baidu.mapapi.map.MapView;
  13. import com.baidu.platform.comapi.basestruct.GeoPoint;
  14. public class MainActivity extends Activity {
  15. private Toast mToast;
  16. private BMapManager mBMapManager;
  17. /**
  18. * MapView 是地图主控件
  19. */
  20. private MapView mMapView = null;
  21. /**
  22. * 用MapController完毕地图控制
  23. */
  24. private MapController mMapController = null;
  25. /**
  26. * MKMapViewListener 用于处理地图事件回调
  27. */
  28. MKMapViewListener mMapListener = null;
  29. @Override
  30. protected void onCreate(Bundle savedInstanceState) {
  31. super.onCreate(savedInstanceState);
  32. /**
  33. * 使用地图sdk前需先初始化BMapManager,这个必须在setContentView()先初始化
  34. */
  35. mBMapManager = new BMapManager(this);
  36. //第一个參数是API key,
  37. //第二个參数是经常使用事件监听,用来处理通常的网络错误,授权验证错误等,你也能够不加入这个回调接口
  38. mBMapManager.init("7ae13368159d6a513eaa7a17b9413b4b", new MKGeneralListener() {
  39. //授权错误的时候调用的回调函数
  40. @Override
  41. public void onGetPermissionState(int iError) {
  42. if (iError ==  MKEvent.ERROR_PERMISSION_DENIED) {
  43. showToast("API KEY错误, 请检查。");
  44. }
  45. }
  46. //一些网络状态的错误处理回调函数
  47. @Override
  48. public void onGetNetworkState(int iError) {
  49. if (iError == MKEvent.ERROR_NETWORK_CONNECT) {
  50. Toast.makeText(getApplication(), "您的网络出错啦!

    ", Toast.LENGTH_LONG).show();

  51. }
  52. }
  53. });
  54. setContentView(R.layout.activity_main);
  55. mMapView = (MapView) findViewById(R.id.bmapView);
  56. /**
  57. * 获取地图控制器
  58. */
  59. mMapController = mMapView.getController();
  60. /**
  61. *  设置地图是否响应点击事件  .
  62. */
  63. mMapController.enableClick(true);
  64. /**
  65. * 设置地图缩放级别
  66. */
  67. mMapController.setZoom(12);
  68. /**
  69. * 显示内置缩放控件
  70. */
  71. mMapView.setBuiltInZoomControls(true);
  72. /**
  73. * 保存精度和纬度的类,
  74. */
  75. GeoPoint p = new GeoPoint((int)(22.547923 * 1E6), (int)(114.067368 * 1E6));
  76. //设置p地方为中心点
  77. mMapController.setCenter(p);
  78. mMapView.regMapViewListener(mBMapManager, new MKMapViewListener() {
  79. /**
  80. * 地图移动完毕时会回调此接口 方法
  81. */
  82. @Override
  83. public void onMapMoveFinish() {
  84. showToast("地图移动完成!

    ");

  85. }
  86. /**
  87. * 地图载入完成回调此接口方法
  88. */
  89. @Override
  90. public void onMapLoadFinish() {
  91. showToast("地图加载完成。");
  92. }
  93. /**
  94. *  地图完毕带动画的操作(如: animationTo())后,此回调被触发
  95. */
  96. @Override
  97. public void onMapAnimationFinish() {
  98. }
  99. /**
  100. *  当调用过 mMapView.getCurrentMap()后,此回调会被触发
  101. *  可在此保存截图至存储设备
  102. */
  103. @Override
  104. public void onGetCurrentMap(Bitmap arg0) {
  105. }
  106. /**
  107. * 点击地图上被标记的点回调此方法
  108. *
  109. */
  110. @Override
  111. public void onClickMapPoi(MapPoi arg0) {
  112. if (arg0 != null){
  113. showToast(arg0.strText);
  114. }
  115. }
  116. });
  117. }
  118. @Override
  119. protected void onResume() {
  120. //MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()
  121. mMapView.onResume();
  122. super.onResume();
  123. }
  124. @Override
  125. protected void onPause() {
  126. //MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()
  127. mMapView.onPause();
  128. super.onPause();
  129. }
  130. @Override
  131. protected void onDestroy() {
  132. //MapView的生命周期与Activity同步,当activity销毁时需调用MapView.destroy()
  133. mMapView.destroy();
  134. //退出应用调用BMapManager的destroy()方法
  135. if(mBMapManager != null){
  136. mBMapManager.destroy();
  137. mBMapManager = null;
  138. }
  139. super.onDestroy();
  140. }
  141. /**
  142. * 显示Toast消息
  143. * @param msg
  144. */
  145. private void showToast(String msg){
  146. if(mToast == null){
  147. mToast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
  148. }else{
  149. mToast.setText(msg);
  150. mToast.setDuration(Toast.LENGTH_SHORT);
  151. }
  152. mToast.show();
  153. }
  154. }

Android 百度地图开发(一)的更多相关文章

  1. Android 百度地图开发(一)--- 申请API Key和在项目中显示百度地图

      标签: Android百度地图API Key  分类: Android 百度地图开发(2)    最近自己想研究下地图,本来想研究google Map,但是申请API key比较坑爹,于是从百度地 ...

  2. android 百度地图开发实例(转载)

    因为在我的寝室google基站定位返回的数据总是为空,所以换成百度地图,发现百度地图开发起来非常方便,提供了许多有用的工具,地图的加载速度也比google地图快许多. 为了加强记忆,写一点androi ...

  3. Android 百度地图开发之一(Hello BaiDu Map)

    之前也接触过百度地图的开发,但那是在网上找的案例或代码,而且是比较老的版本.打算重新学习一下百度地图的开发. 本次使用的百度地图的版本是 Android SDK v3.0.0 本篇文章主要讲述百度地图 ...

  4. [android] 百度地图开发 (两).所在地的城市定位和城市POI搜索

    一个. 百度地图城市位置和POI搜索知识       上一篇文章"百度地图开发(一)"中讲述了怎样申请百度APIKey及解决显示空白网格的问题.该篇文章主要讲述怎样定位城市位置.定 ...

  5. [android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

        近期做android百度地图,可是使用baidumapapi_v2_3_1.jar和libBaiduMapSDK_v2_3_1.so显示百度地图时总是遇到问题--仅仅显示网格而没有显示地图,网 ...

  6. Android百度地图开发(一)之初体验

    转载请注明出处:http://blog.csdn.net/crazy1235/article/details/42614603 做关于位置或者定位的app的时候免不了使用地图功能,本人最近由于项目的需 ...

  7. Android百度地图开发03之地图控制 + 定位

    前两篇关于百度地图的blog写的是,一些基本图层的展示 和 覆盖物的添加+地理编码和反地理编码. 接下来,这篇blog主要说一些关于地图控制方面的内容和定位功能. 百度地图提供的关于地图的操作主要有: ...

  8. Android百度地图开发01之初体验

    做关于位置或者定位的app的时候免不了使用地图功能,本人最近由于项目的需求需要使用百度地图的一些功能,所以这几天研究了一下,现写一下blog记录一下,欢迎大家评论指正! 一.申请AK(API Key) ...

  9. Android百度地图开发(一)环境搭建

    1.百度地图官方API文档下载 版本 使用说明 下载 Android SDK 通用资源下载 <离线地图>提供新版离线地图(百度矢量地图)与旧版离线地图(百度栅格地图)下载. 备注: 自An ...

  10. android百度地图开发之自动定位所在位置与固定位置进行驾车,步行,公交路线搜索

    最近跟着百度地图API学地图开发,先是学了路径搜索,对于已知坐标的两点进行驾车.公交.步行三种路径的搜索(公交路径运行没效果,待学习中),后来又 学了定位功能,能够获取到自己所在位置的经纬度,但当将两 ...

随机推荐

  1. ack-grep 代码全文搜索

    安装 ubuntu下要安装ack-grep,因为在debian系中,ack这个名字被其他的软件占用了. sudo apt-get install ack-grep 特点 大家都说自己的东西好,因此ac ...

  2. [Web 前端] 如何在React中做Ajax 请求?

    cp from : https://segmentfault.com/a/1190000007564792 如何在React中做Ajax 请求? 首先:React本身没有独有的获取数据的方式.实际上, ...

  3. HTML5 本地文件操作之FileSystemAPI简介

    一.FileSystemAPI简介 HTML5的文件操作Api中 1.FileAPI,用于基础的客户端本地文件读取,目前大多数接口已经被主流浏览器支持,点击查看更多参考 2.FileSystemAPI ...

  4. TeXworks使用教程指南

    TeXworks是Windows版本的TeX Live默认提供的编辑器.值得注意的是,TeXworks 是XeTeX 作者 Jonathan Kew 开发的,其特点是界面简洁友好,集成了轻便的 PDF ...

  5. Redis 性能问题的记录

    最近线上使用redis, 查询的情况不甚理想, 这个查询操作是个 lua 脚本, 包含如下操作 开发机 redis, 没有其他干扰, 插入的 zset 有 5000 member 左右, 使用的 re ...

  6. 标识符(IDentifier)

    ylbtech-Miscellaneos:标识符(IDentifier) A,返回顶部 1, 标识符(IDentifier)是指用来标识某个实体的一个符号.在不同的应用环境下有不同的含义. 在日常生活 ...

  7. go语言之进阶篇主协程先退出

    1.主协程先退出 示例: package main import ( "fmt" "time" ) //主协程退出了,其它子协程也要跟着退出 func main ...

  8. Git SVN 版本控制 简介 总结 MD

    Git 使用准备 主流的 Git 托管网站 GitLab,主流网站,私有仓库也完全免费,功能更强大,页面精美,操作方便 GitHub,最著名的免费Git托管网站,缺点是免费的不支持私有项目 OSChi ...

  9. Backbone.js 使用 Collection

    在前面我们的 Backbone.js 用上了 Model, 但绝大数的情况下我们处理的都是一批的 Model 数据列表,所以需要有一个 Collection 来容纳 Model, 就像 Java 里最 ...

  10. linux bash关闭标准输出1(exec 1<&-)后重新打开

    linux bash shell的再次学习. 文件描述符: stdin,stdout 和 stderr 的文件描述符分别是 0,1 和 2(一个文件描述符说白了就是文件系统为了跟踪这个打开的文件而分配 ...