转载请标明出处: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中添加开发密钥

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

b、添加所需权限

  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、布局文件中添加地图控件

  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 全局变量:

  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、不过地图很耗电,所以有必要管理其声明周期

  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.0.0 (四) 引入离线地图功能

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

  2. Android 百度地图 SDK v3.0.0 (三) 添加覆盖物Marker与InfoWindow的使用

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37737213 上篇博客已经实现了地图的定位以及结合了方向传感器用户路痴定位方向, ...

  3. Android 百度地图 SDK v3.0.0 (三) 加入覆盖Marker与InfoWindow使用

    转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/37737213 上篇博客已经实现了地图的定位以及结合了方向传感器用户路痴定位方向, ...

  4. Android 百度地图 SDK v3.0.0 (四) 离线地图功能介绍

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

  5. 《第一行代码》(三: Android 百度地图 SDK v3.0.0)

    百度地图的SDK变化较大,第一行代码里的demo已经不能用了,一直以为是代码类错误,害我花了很多时间,可以参考这位博主的:http://blog.csdn.net/lmj623565791/artic ...

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

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

  7. Android百度地图SDK 导航初始化和地图初始化引起的冲突

    如题,相同是百度地图SDK开发过程中遇到的一个问题.交代下背景: 开发了一款内嵌百度地图的应用,因此里面差点儿相同将眼下百度地图SDK开放的主要功能都用到了,定位,地图显示,覆盖物标示.POI搜索,行 ...

  8. Android 百度地图SDK 定位

    引用locSDK_6.1.3.jar,切记添加相应的so文件. 1.定位初始化,需要使用getApplicationContext() mLocClient = new LocationClient( ...

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

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

随机推荐

  1. 关于T-SQL重编译那点事,内联函数和表值函数在编译生成执行计划的区别

    本文出处:http://www.cnblogs.com/wy123/p/6266724.html 最近在学习 WITH RECOMPILE和OPTION(RECOMPILE)在重编译上的区别的时候,无 ...

  2. [转载]Java synchronized详解

    在编写一个类时,如果该类中的代码可能运行于多线程环境下,那么就要考虑同步的问题.在Java中内置了语言级的同步原语--synchronized,这也大大简化了Java中多线程同步的使用.我们首先编写一 ...

  3. 基于GBT28181:SIP协议组件开发-----------第四篇SIP注册流程eXosip2实现(一)

    原创文章,引用请保证原文完整性,尊重作者劳动,原文地址http://www.cnblogs.com/qq1269122125/p/3945294.html. 上章节讲解了利用自主开发的组件SIP组件l ...

  4. 【USACO 2.2.4】派对灯

    [描述] 在IOI98的节日宴会上,我们有N(10<=N<=100)盏彩色灯,他们分别从1到N被标上号码. 这些灯都连接到四个按钮: 按钮1:当按下此按钮,将改变所有的灯:本来亮着的灯就熄 ...

  5. 纯js制作遮罩层对话框 -- g皓皓

    //本文支持js在线工具测试.转载请注明出处. <htmlxmlns="http://www.w3.org/1999/xhtml"> <head> < ...

  6. c# sqlserver备份还原(转)

    WinForm c# 备份 还原 数据库 其实是个非常简单的问题,一个Form,一个Button,一个OpenFileDialog,一个SaveFileDialog.下面给出备份与还原类 using ...

  7. Windows下命令行连接mysql及导入sql文件

    嗯,今天要把phpcms的模板放到服务器上,,,呃,phpMyAdmin死活连接不上数据库,这又是个神马情况无奈,又想到命令行了,好吧,最近喜欢上命令行了,不过这果然还是命令行强大啊,啊哈哈下面呢,我 ...

  8. CAFFE安装 CentOS无GPU

    前记 由于是在一台用了很久的机器上安装caffe,过程比较复杂,网上说再干净的机器上装比较简单.如果能有干净的机器,就不用再过这么多坑了,希望大家好运!介绍这里就不说了,直接进入正题: Caffe 主 ...

  9. bestcoder单调区间

    http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=584&pid=1006 题解:ORZ Matrix67 ht ...

  10. 从零开始学Sketch——入门篇-b

    如果你是一枚交互设计师或者UI设计师,那么你一定知道Sketch这个强大的矢量设计软件:如果你用过Photoshop,那么在你接触了Sketch之后就能了解到这款产品相对于PS的优点,说不定会跟我一样 ...