转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37729091

最近公司要把百度地图集成的项目中,于是我就研究了一天百度地图的SDK,当前的版本:Android SDK v3.0.0 。 虽然百度地图网上相关代码比较多,大多可能都是比较旧的版本,且百度地图API的改动感觉也比较大,所以再此跟大家分享一下一天的劳动成功。

下面简单展示下,博客中会介绍的功能:

1、功能介绍

a、首先肯定是导入地图,然后就是地图模式的一些切换,普通,卫星,实时交通什么的。

b、定位功能,定位当前位置。

效果图:

c、动态添加覆盖物,点击覆盖物,弹出层以及其他效果。

效果图:

d、结合方向传感器,为地图的定位功能添加方向,本人极其路痴,不分东南西北,所以此功能对我来说非常重要,手机不断旋转,我才能知道当前应该走哪条路,直接显示的地图对我来说没用。

效果图(我360度的旋转手机,观察效果图的变化):

切换到别的模式也是很炫的:

e、提供离线地图下载,可以极大的省去用户的流量,也能保证在无网络情况对地图的使用。

基本这上述的功能,第一篇,还是从零开始,先把百度地图导入app再说。

2、申请密钥

a、申请密钥,到百度API控制台的页面:http://lbsyun.baidu.com/apiconsole/key

输入要应用名称,选择应用类型,输入安全吗。

b、关于安全码 ( 数字签名;包名 ) 的获取:

打开IDE:

黑框框住的就是数字签名,然后包名就是咱们应用的包名,直接用分号连接:例如:F5:10:39:D9:81:57:BD:2E:A0:CD:E3:EB:5E:C4:CC:E0:E0:0D:41:56;com.zhy.zhy_baidu_ditu_demo03

最后点击完成,就能获取密钥了:

3、第一个baidu map应用

下载就不多说了,直接点击官网的相关下载就行选择就可,后面我也会贴上源码。

配置:

第一步:在工程里新建libs文件夹,将开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs\armeabi目录下(官网demo里已有这两个文件,如果要集成到自己的工程里,就需要自己添加),拷贝完成后的工程目录如下图所示;

注:liblocSDK3.so和locSDK_3.1.jar为百度定位SDK所使用资源,开发者可根据实际需求自行添加。
android_dev1.png
第二步:在工程属性->Java Build Path->Libraries中选择“Add External JARs”,选定baidumapapi_vX_X_X.jar,确定后返回。
通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。
注意:由于adt插件升级,若您使用Eclipse adt 22的话,需要对开发环境进行相应的设置,方法如下:
1). 在Eclipse 中选中工程,右键选 Properties->Java Build Path->Order and Export 使 Android Private Libraries处于勾选状态;
2). Project -> clean-> clean all .

a、在application中添加开发密钥

[html] view plaincopy
  1. <application
  2. <meta-data
  3. android:name="com.baidu.lbsapi.API_KEY"
  4. android:value="开发者 key" />
  5. </application>

b、添加所需权限

[html] view plaincopy
  1. <uses-permission android:name="android.permission.GET_ACCOUNTS" />
  2. <uses-permission android:name="android.permission.USE_CREDENTIALS" />
  3. <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
  4. <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
  5. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  6. <uses-permission android:name="android.permission.INTERNET" />
  7. <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
  8. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
  9. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  10. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  11. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  12. <uses-permission android:name="android.permission.BROADCAST_STICKY" />
  13. <uses-permission android:name="android.permission.WRITE_SETTINGS" />
  14. <uses-permission android:name="android.permission.READ_PHONE_STATE" />

c、布局文件中添加地图控件

[html] view plaincopy
  1. <com.baidu.mapapi.map.MapView
  2. android:id="@+id/id_bmapView"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:clickable="true" />

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

[java] view plaincopy
  1. @Override
  2. protected void onCreate(Bundle savedInstanceState)
  3. {
  4. super.onCreate(savedInstanceState);
  5. requestWindowFeature(Window.FEATURE_NO_TITLE);
  6. // 在使用SDK各组件之前初始化context信息,传入ApplicationContext
  7. // 注意该方法要再setContentView方法之前实现
  8. SDKInitializer.initialize(getApplicationContext());
  9. setContentView(R.layout.activity_main);
  10. }

好了,经过这四步就能显示地图了~~

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

[java] view plaincopy
  1. package com.zhy.zhy_baidu_ditu_demo00;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.Window;
  5. import com.baidu.mapapi.SDKInitializer;
  6. import com.baidu.mapapi.map.MapView;
  7. public class MainActivity extends Activity
  8. {
  9. private MapView mMapView = null;
  10. @Override
  11. protected void onCreate(Bundle savedInstanceState)
  12. {
  13. super.onCreate(savedInstanceState);
  14. requestWindowFeature(Window.FEATURE_NO_TITLE);
  15. // 在使用SDK各组件之前初始化context信息,传入ApplicationContext
  16. // 注意该方法要再setContentView方法之前实现
  17. SDKInitializer.initialize(getApplicationContext());
  18. setContentView(R.layout.activity_main);
  19. // 获取地图控件引用
  20. mMapView = (MapView) findViewById(R.id.id_bmapView);
  21. }
  22. @Override
  23. protected void onDestroy()
  24. {
  25. super.onDestroy();
  26. // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理
  27. mMapView.onDestroy();
  28. mMapView = null;
  29. }
  30. @Override
  31. protected void onResume()
  32. {
  33. super.onResume();
  34. // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理
  35. mMapView.onResume();
  36. }
  37. @Override
  38. protected void onPause()
  39. {
  40. super.onPause();
  41. // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理
  42. mMapView.onPause();
  43. }
  44. }

好了,完成。其实百度开发指南上对了helloworld这篇也极其清楚~~~~

源码点击下载

Android 百度地图 SDK v3.0.0 (一)相关推荐

  1. Android --- 百度地图 SDK v3.6.0 以上版本找不到 PoiOverlay 类

    解决方法: 下载下面的包,解压 链接:https://pan.baidu.com/s/1Wux0Y8-ZygYL5v0gRanVqw 提取码:ccxx 将下面的文件放到你的项目中

  2. Android 百度地图 SDK v3.0.0 (四) 引入离线地图功能

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37758097 一直觉得地图应用支持离线地图很重要啊,我等移动2G屌丝,流量不易, ...

  3. Android百度地图——SDK版本v2.0.0初探

    大过年的,没回家.听着外面烟花爆竹声阵阵,大冷天的一个人也不想出去转.城市不管多么繁华,一个人都是感觉"无味".最近在研究百度地图的API使用,在使用过程中遇到些问题,有些心得吧, ...

  4. android 百度周边雷达,android 百度地图SDK 3.7.0 周边雷达-Radar 周边搜索-PoiSearch

    因为项目需要,最近研究了下百度地图的SDK,简单记录一些点. 准备工作 1.下载SDK及demo 2.申请key key需要用到app的包名和签名证书的SHA1值 如果需要使用 周边雷达 功能,需要再 ...

  5. android 百度地图SDK 3.7.0 周边雷达-Radar 周边搜索-PoiSearch

    因为项目需要,最近研究了下百度地图的SDK,简单记录一些点. 准备工作 1.下载SDK及demo 下载地址:http://lbsyun.baidu.com/index.php?title=androi ...

  6. android6.0 百度地图,Android百度地图SDK 导航SDK2.0结合定位SDK6.0.5的导航参数设置方法...

    是否执行成功 其中对于算路的节点,现在有了一个新的规则,可见BNRoutePlanNode 取文档的释义如下: public BNRoutePlanNode(double longitude, dou ...

  7. 百度地图SDK v3.6.0以上版本找不到PoiOverlay类的解决方法

    最近测试本人使用的是百度地图用SDK v3.7.3的版本,使用POI检索功能的时候,想直接使用PoiOverlay类创建对象把检索出来的结果在地图上表示出来.按照正常的方法如下: 可是无论如何也没有也 ...

  8. Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37730469 在上一篇博客中,我们成功把地图导入了我们的项目.本篇我们准备为地图 ...

  9. 百度地图SDK v3.6.0以上版本setOnMarkerClickListener 失效的问题解决

    不多说上代码 原本是这样的 我测试的版本是 百度的 3.7.3版本. 再次使用上面代码 失效了. 后来论坛各种找,没有结果.再后来 去看百度的源码.发现 由于这个 百度OverLay这个类开源了.所以 ...

最新文章

  1. luogu P3796【模板】AC自动机(加强版)
  2. c++ eos智能合约开发_TrustBase平台智能合约的开发与实现
  3. 直接定址表---汇编学习笔记
  4. 【学术相关】U.S.News正式发布最新的2022最佳全球院校排名
  5. 【LeetCode】002 Add Two Numbers
  6. java中的exception stack有时候不输出的原因
  7. 用前考虑清楚,伤敌一千自损八百的字体反爬虫
  8. SpringBoot集成WebSocket案例:服务端与客户端消息互通
  9. 【Python-3.5】win7安装Pygame
  10. nopcommerce插件深度剖析
  11. Windows 常用消息大全系统消息、通告消息、用户消息
  12. 如何爬取中国近十年的GDP,并写入csv文件?
  13. 微信小程序之 收藏功能
  14. maven项目中JRE System Library Problem J2SE-1.5问题
  15. 闭环系统零、极点位置对时间响应性能指标的影响
  16. RGB色彩的计算机表示
  17. 叠加等边三角形的绘制 python_python 叠加等边三角形的绘制
  18. (Verilog)单周期CPU设计
  19. Fiddler抓包:详解Fiddler抓包工具软件使用教程
  20. linux 搭建免费企业邮箱

热门文章

  1. tomcat发布web项目
  2. Choerodon猪齿鱼敏捷管理实践(一)——需求管理
  3. 【数据结构】线性表之双向链式线性表
  4. 阿里云数据森林人才计划起航
  5. python常见错误解决路线图
  6. RHEL5.8系统裁减(内含做小Linux前的准备工作)
  7. What’s the difference between system.web and system.webServer?
  8. Linux 命令(83)—— groups 命令
  9. layui中接收modelView中返回的对象并赋值给容器
  10. spring cloud Eureka server 问题 Spring Cloud java.lang.TypeNotPresentException