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

一、申请AK(API Key)

要想使用百度地图sdk,就必须申请一个百度地图的api key。申请流程挺简单的。

首先注册成为百度的开发者,然后打开http://lbsyun.baidu.com/apiconsole/key这个网址,添加应用:

创建应用最重要的一步是【安全码】。安全码是有【数字签名】和【;】和【包名】组成。包名就是你所创建的项目的包的结构,是指AndroidManifest.xml中的manifest标签下的package的值。

数字签名指android的签名证书的SHA1值。

获取数字签名有两种方法:

1. 第一种方法:使用eclipse查看。

打开eclipse的preferences菜单,在Android下的【Build】中可以看到SHA1的值,如下图:

2. 第二种方法:使用keytool工具(jdk自带)查看。

在控制台下,输入【cd .android】,然后输入【keytool -list -v -keystore debug.keystore】回车,然后提示你输入【秘钥库口令】,输入【android】回车然后就会显示SHA1的值。

数字签名搞定了,然后创建应用就ok了。创建完成之后,应用列表中会显示相应的AK,也就是api key。

二、下载SDK开发包

打开http://developer.baidu.com/map/index.php?title=androidsdk/sdkandev-download网址下载sdk,可以全部下载,也可以自定义下载。从V2.3.0之后的版本,SDK的开发包以可定制的形式提供下载,用户可以根据自己的项目需要勾选相应的功能下载对应的SDK开发包。

三、在android项目中引用百度SDK

1. 将开发包中的jar包和so文件添加到libs文件下。

2. 在AndroidManifest.xml中添加开发秘钥和所需权限。

  1. <application
  2. android:allowBackup="true"
  3. android:icon="@drawable/ic_launcher"
  4. android:label="@string/app_name"
  5. android:theme="@style/AppTheme" >
  6. <meta-data
  7. android:name="com.baidu.lbsapi.API_KEY"
  8. android:value="填写你申请的AK" />

权限:

  1. <!-- 百度API所需权限 -->
  2. <uses-permission android:name="android.permission.GET_ACCOUNTS" />
  3. <uses-permission android:name="android.permission.USE_CREDENTIALS" />
  4. <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
  5. <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
  6. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  7. <uses-permission android:name="android.permission.INTERNET" />
  8. <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
  9. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
  10. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  11. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  12. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  13. <uses-permission android:name="android.permission.BROADCAST_STICKY" />
  14. <uses-permission android:name="android.permission.WRITE_SETTINGS" />
  15. <uses-permission android:name="android.permission.READ_PHONE_STATE" />

3. 在布局文件中添加地图控件:

  1. <com.baidu.mapapi.map.MapView
  2. android:id="@+id/bmapview"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:clickable="true" />

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

  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. requestWindowFeature(Window.FEATURE_NO_TITLE);
  5. //
  6. SDKInitializer.initialize(getApplicationContext());
  7. setContentView(R.layout.activity_main);
  8. init();
  9. }

这里需要注意一下:initialize方法中必须传入的是ApplicationContext,传入this,或者MAinActivity.this都不行,不然会报运行时异常,所以百度建议把该方法放到Application的初始化方法中。

然后重写activity的生命周期的几个方法来管理地图的生命周期。在activity的onResume、onPause、onDestory方法中分别执行mapview的onReusme、onPause、onDestory方法。

  1. package com.bdmap.view;
  2. import com.baidu.mapapi.SDKInitializer;
  3. import com.baidu.mapapi.map.BaiduMap;
  4. import com.baidu.mapapi.map.MapView;
  5. import android.app.Activity;
  6. import android.os.Bundle;
  7. import android.view.View;
  8. import android.view.Window;
  9. public class MainActivity extends Activity {
  10. // 百度地图控件
  11. private MapView mMapView = null;
  12. // 百度地图对象
  13. private BaiduMap bdMap;
  14. @Override
  15. protected void onCreate(Bundle savedInstanceState) {
  16. super.onCreate(savedInstanceState);
  17. requestWindowFeature(Window.FEATURE_NO_TITLE);
  18. //
  19. SDKInitializer.initialize(getApplicationContext());
  20. setContentView(R.layout.activity_main);
  21. init();
  22. }
  23. /**
  24. * 初始化方法
  25. */
  26. private void init() {
  27. mMapView = (MapView) findViewById(R.id.bmapview);
  28. }
  29. @Override
  30. protected void onResume() {
  31. super.onResume();
  32. mMapView.onResume();
  33. }
  34. @Override
  35. protected void onPause() {
  36. super.onPause();
  37. mMapView.onPause();
  38. }
  39. @Override
  40. protected void onDestroy() {
  41. mMapView.onDestroy();
  42. mMapView = null;
  43. super.onDestroy();
  44. }
  45. }

完成以上步骤,此时就可以完成一个简单的”Hello Map“程序了。

三、普通地图和卫星地图切换

百度地图将地图的类型分为两种:普通矢量地图和卫星图。

  1. mMapView = (MapView) findViewById(R.id.bmapView);
  2. mBaiduMap = mMapView.getMap();
  3. //普通地图
  4. mBaiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);
  5. //卫星地图
  6. mBaiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE);

四、显示实时交通图(路况图)

  1. //开启交通图
  2. mBaiduMap.setTrafficEnabled(true);

五、显示热力图

热力图就是以特殊高亮的形式显示访客热衷的页面区域和访客所在的地理区域的图示。通俗来说就是显示地图上某一块区域的人的密集程度。类似于下图所示:

  1. //开启热力图
  2. mBaiduMap.setBaiduHeatMapEnabled(true);

Android百度地图开发01之初体验的更多相关文章

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

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

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

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

  3. Android 百度地图API(01)_开发环境 HelloBaiduMap

    转载于:http://blog.csdn.net/lmj623565791/article/details/37729091 转载于:http://blog.csdn.net/crazy1235/ar ...

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

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

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

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

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

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

  7. android 百度地图入门01 (史上最详没有之一)

    最近一直和百度地图打交道,写几篇博客记录一下吧,目前最新版是4.0的 ,之前我用的是3.7的, 就以4.0的为例说一下最基本的配置流程吧. 一.准备工作 1.申请一个百度地图开发者账户--地址:htt ...

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

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

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

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

随机推荐

  1. SFI(段文件描述符存在的理由与意义)

    SFI:short file identifier,短文件描述符 SFI的取值必须在0001-001E之间,即0-30 SFI存在的理由:有些COS命令可以不需要事先选择文件而直接通过SFI快速访问文 ...

  2. l2tp vpn客户端

    1. 添加PPA   sudo apt-add-repository ppa:seriy-pr/network-manager-l2tp   2. 刷新软件包缓存   sudo apt-get upd ...

  3. 最小二乘法(least squares method)

    一.背景 号到北大去听hulu的讲座<推荐系统和计算广告在视频行业应用>,想到能见到传说中的项亮大神,特地拿了本<推荐系统实践>求签名.讲座开始,主讲人先问了下哪些同学有机器学 ...

  4. GB28181国检推流

    GB28181国检有一向内容是实时播放摄像机流,经过一番努力,搞定这个功能,现分享心得: 首先需要了解流程,说简答点就是视频流从哪里来到什么地方去,下图描述了视频流推流,转发的 基本过程:信令交互成功 ...

  5. chm文件右边部分查看不了

    右键属性-> 下面好像有句话是说该文件来自网络为保护您的计算机什么什么的,, 然后你解除锁定就能用了 版权声明:本文为博主原创文章,未经博主允许不得转载.

  6. poj 1422 Air Raid 最少路径覆盖

    题目链接:http://poj.org/problem?id=1422 Consider a town where all the streets are one-way and each stree ...

  7. 2010 Asia Fuzhou Regional Contest

    A hard Aoshu Problem http://acm.hdu.edu.cn/showproblem.php?pid=3699 用深搜写排列,除法要注意,还有不能有前导零.当然可以5个for, ...

  8. 在C#中调用VBScript和JavaScript等脚本的实现

    在C#中调用VBScript.JavaScript等脚本的实现 作者:郑佐 2004-04-26 以前在做工作流(workflow)项目的时候,里面有一项就是在用户制定流程定义时可以编写脚本来控制活动 ...

  9. BZOJ1502: [NOI2005]月下柠檬树

    Simpson法相当好用啊!神奇的骗分算法! /************************************************************** Problem: 1502 ...

  10. ***mysql中查询今天、昨天、上个月sql语句

    今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天Select * FROM 表名 Where TO_DAYS( NOW( ) ...