做关于位置或者定位的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中添加开发秘钥和所需权限。

[java] view plaincopy
  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" />

权限:

[java] view plaincopy
  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. 在布局文件中添加地图控件:

[java] view plaincopy
  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全局变量。

[java] view plaincopy
  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方法。

[java] view plaincopy
  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“程序了。

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

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

[java] view plaincopy
  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);

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

[java] view plaincopy
  1. //开启交通图
  2. mBaiduMap.setTrafficEnabled(true);

五、显示热力图

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

[java] view plaincopy
  1. //开启热力图
  2. mBaiduMap.setBaiduHeatMapEnabled(true);

Android百度地图开发01之初体验相关推荐

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

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

  2. Android 百度地图开发(二)

    前面我们一起了解了百度地图的申请与集成Android 百度地图开发(一),今天我们接着来学习百度地图. 今天主要来了解如下问题: 1.百度地图的生命周期控制 上一篇张我们已经在布局文件里增加了mapV ...

  3. Android studio百度地图SDK开发 2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划

    2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划 开发前配置,显示基本地图,实时定位等查看之前代码,此博客紧接上一博客:https://blog.csdn.ne ...

  4. Android百度地图开发入门教程

    Android百度地图开发入门教程 1.平台注册登录 2.创建应用 3.Android studio配置 4.代码编写 5.最终效果(建议真机) 1.平台注册登录 登录百度地图开放平台网站注册并登录 ...

  5. [android] 百度地图开发 (三).定位当前位置及getLastKnownLocation获取location总为空问题

           前一篇百度地图开发讲述"(二).定位城市位置和城市POI搜索",主要通过监听对象MKSearchListener类实现城市兴趣点POI(Point of Intere ...

  6. android百度地图开发

    android百度地图开发 使用android开发百度地图需要事先在百度地图开发者平台上注册账号并下载百度地图相关的工具包,之后配置到自己的程序中,具体可参考https://lbsyun.baidu. ...

  7. Android百度地图开发(二)定位之自动定位及标注(及定位几日内瓦或坐标4.9E-324问题)

    接上篇Android百度地图开发(一)之Hello BaiduMap 1.环境配置: 新增权限如下 <!-- 这个权限用于进行网络定位--> <uses-permission and ...

  8. android 百度地图开发 别人用不了,Android百度地图开发的那些不足之处

    Android百度地图开发的那些不足之处,最近做的项目中百度地图是很重要的一个模块,其中实现了定位.自定义Marker图标.线路规划.SuggestionSearch检索.地图截图以及导航等功能.因为 ...

  9. 超详细的Android百度地图开发:在APP上定位并显示出来

    超详细的Android百度地图开发:在APP上定位并显示出来 一 写在前面 二 注册百度开发者账户.申请API KEY 三.代码实现 四.问题 五.总结 一 写在前面 由于项目所需,我需要在手机APP ...

最新文章

  1. RxSwift ViewModel定义
  2. 网络层IP路由的负载均衡实现思路
  3. 多边形面积(Area_Of_Polygons)
  4. 【C++grammar】左值、右值和将亡值
  5. [Swift通天遁地]一、超级工具-(13)使用PKHUD制作各种动态提示窗口
  6. golang websocket 聊天室demo
  7. 算法在岗3年小结:学习成长篇
  8. c语言程序结课编程报告,C语言程序分析报告课程标准.doc
  9. php 类中输出所有属性,PHP基于反射获取一个类中所有属性
  10. python派森编程软件_派森Python
  11. 固态硬盘故障检测_固态硬盘有坏道怎么办(ssd坏块检测工具)
  12. STM32/GD32 IAP/Bootloader升级APP研究以及编程实现、hex文件格式
  13. 电脑联网打不开网页只能用qq和微信
  14. 嵌入式系统原理与实践期末个人总结
  15. 简明Jieba中文分词教程(分词、关键词提取、词性标注、计算位置)
  16. android手游自动按键,天涯明月刀手游自动弹奏按键精灵使用详细教学 安卓ios使用教程...
  17. WPF入门教程(一)---基础
  18. 机器学习关键步骤(一)
  19. 网络工具netstat与ss
  20. 合理清除AlibabaProtect进程

热门文章

  1. 推荐几个前端大佬,真的厉害!
  2. 面向对象笔试题练习一
  3. Java中short、int、long、float、double的取值范围
  4. java web中jsp常用标签
  5. js中apply和join
  6. 安装vs2017出现闪退现象_Adobe Reader 闪退
  7. 使用tab键分割的文章能快速转换成表格。( )_EXCEL的163种使用技巧集锦-42~62
  8. PHP检测远端文件是否存在
  9. mac下npm/node的安装和卸载、升级;node、npm升级后最后删掉node_modules重新安装
  10. rabbitmq学习: