目录

一.获取开发密钥(AK)

二.在项目中集成BaiduMap SDK

三.显示地图

四.显示定位


一.获取开发密钥(AK)

1.百度搜索百度地图开发者,进入后选择登陆,没有百度账号则先进行注册:

百度地图开放平台 | 百度地图API SDK | 地图开发

2.登录后进入API控制台,选择图中“应用管理”下我的应用:

3.点击“创建应用”开始申请开发密钥,如下图:

4.如下图所示,输入应用名称"Task",选择应用类型“Android SDK”,并勾选如下启用服务

5.接着要获取SHA1和包名(以下是我获得之后的结果):

获取过程如下:

A.获取SHA1:
进入Terminal工具,如下图所示

找到自己下载的安卓位置:

然后在Terminal转换路径到keytool所在文件下:

然后在c盘中找到.android文件(一般在用户文件下面),找到keystore所在路径,复制路径:

在AS中输入命令行和密码,获取SHA1

(        命令行:keytool -list -v -keystore +debug.keystore的路径;

密码:原始密码一般为android

)如图所示:

-------
获取包名
在app目录下的build.gradle文件中找到applicationId,并确保其值与AndroidManifest.xml中定义的package相同,即可获取包名,如图所示:

(6)在网页中填入上述信息后提交,即可获得AK

二.在项目中集成BaiduMap SDK

1.下载开发包(选择如下):

2.将开发包拷贝至工程(截图以普通地图服务的开发包为例,步骑行导航的开发包同理)
(1)添加jar文件
打开解压后的开发包文件夹,找到BaiduLBS_Android.jar文件将其拷贝至工程的app/libs目录下,同时在下载的开发包中拷贝需要的CPU架构对应的so文件文件夹到app/libs目录下,如图:

(2)在app目录下的build.gradle文件中android块中配置sourceSets标签,如果没有使用该标签则新增,详细配置代码如下:

(3)往工程中添加jar文件:在工程配置中需要将前面添加的jar文件集成到我们的工程中。
在libs目录下,选中每一个jar文件(此处只有一个BaiduLbs_Android.jar)右键,选择Add As Library…此时会发现在app目录的build.gradle的dependencies块中生成了工程所依赖的jar文件的对应说明,如下所示:

三.显示地图

1.配置AndroidManifest.xml文件:

(1)在application中加入如下代码配置开发密钥(AK):

<meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="OFsLOnBraM94mugNDd76Ct4DeoocAGxc" />

(2)在application外部添加如下权限声明:

    <!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,POI检索等 --><uses-permission android:name="android.permission.INTERNET" /><!-- 获取网络状态,根据网络状态切换进行数据请求网络转换 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- 读取外置存储。如果开发者使用了so动态加载功能并且把so文件放在了外置存储区域,则需要申请该权限,否则不需要 --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!-- 写外置存储。如果开发者使用了离线地图,并且数据写在外置存储区域,则需要申请该权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 这个权限用于进行网络定位 -->

2.在activity_main.xml中添加地图容器

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><com.baidu.mapapi.map.MapViewandroid:id="@+id/bmapView"android:layout_width="match_parent"android:layout_height="match_parent"android:clickable="true" /></LinearLayout>

3.地图初始化:

在SDK各功能组件使用之前都需要调用“SDKInitializer.initialize(getApplicationContext())”,因此建议在应用创建时初始化SDK引用的Context为全局变量。新建一个自定义的Application,在其onCreate方法中完成SDK的初始化。代码如下:

package com.example.mylbs1;import android.app.Application;import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;public class DemoApplication extends Application {@Overridepublic void onCreate() {super.onCreate();//在使用SDK各组件之前初始化context信息,传入ApplicationContextSDKInitializer.initialize(this);//自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.//包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。SDKInitializer.setCoordType(CoordType.BD09LL);}
}

并在AndroidManifest.xml中声明:

4.创建地图Activity,管理MapView生命周期

public class MainActivity extends AppCompatActivity {private MapView mMapView =null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mMapView = (MapView) findViewById(R.id.bmapView);@Overrideprotected void onResume() {super.onResume();//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理mMapView.onPause();}@Override  protected void onDestroy() {  super.onDestroy();  //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理  mMapView.onDestroy();  }
}

结果:

四.显示定位

1.配置AndroidManifest.xml文件(与上面类似,加上权限):

 <!-- 这个权限用于进行网络定位 --><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!-- 这个权限用于访问GPS定位 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

2.在Application标签中声明定位的service组件:

<serviceandroid:name="com.baidu.location.f"android:enabled="true"android:process=":remote" />

3.开启地图的定位图层:

  mMapView.getMap().setMapType(BaiduMap.MAP_TYPE_SATELLITE);mBaiduMap=mMapView.getMap();mBaiduMap.setMyLocationEnabled(true);

4.我们通过继承抽象类BDAbstractListener并重写其onReceieveLocation方法来获取定位数据,并将其传给MapView。

public class MyLocationListener extends BDAbstractLocationListener {@Overridepublic void onReceiveLocation(BDLocation location) {if (location == null || mMapView == null){return;}MyLocationData locData = new MyLocationData.Builder().accuracy(location.getRadius())// 此处设置开发者获取到的方向信息,顺时针0-360.direction(location.getDirection()).latitude(location.getLatitude()).longitude(location.getLongitude()).build();mBaiduMap.setMyLocationData(locData);}}

5.通过LocationClient发起定位:

//定位初始化
mLocationClient = new LocationClient(this);//通过LocationClientOption设置LocationClient相关参数
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true); // 打开gps
option.setCoorType("bd09ll"); // 设置坐标类型
option.setScanSpan(1000);//设置locationClientOption
mLocationClient.setLocOption(option);//注册LocationListener监听器
MyLocationListener myLocationListener = new MyLocationListener();
mLocationClient.registerLocationListener(myLocationListener);
//开启地图定位图层
mLocationClient.start();

6.正确管理各部分的生命周期:

@Override
protected void onResume() {mMapView.onResume();super.onResume();
}@Override
protected void onPause() {mMapView.onPause();super.onPause();
}@Override
protected void onDestroy() {mLocationClient.stop();mBaiduMap.setMyLocationEnabled(false);mMapView.onDestroy();mMapView = null;super.onDestroy();
}

7.在这个过程中会发现结果仍然显示在北京,缩小地图之后,才能找到定位的地点。

因此在第一次定位的时候要在显示定位代码中加入第一次定位动态移动到定位点的代码。在MyLocationListener中的onReceiveLocation方法中添加下面的代码,其中isFirstLocation为布尔型:

 if (isFirstLocation) {// 获取经纬度LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());MapStatusUpdate status = MapStatusUpdateFactory.newLatLng(ll);// mBaiduMap.setMapStatus(status);//直接到中间mBaiduMap.animateMapStatus(status);// 动画的方式到中间isFirstLocation = false;}

8.结果(在虚拟机上不准确,真机正确):

9.代码

在这里遇到一个问题,无法上传到github上

解决的博客:

解决的博客

我的github地址:

Githubhttps://github.com/1224286059/LBS/

百度地图开发(安卓)相关推荐

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

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

  2. 用android studio测量距离,Android studio 百度地图开发(6)Marker绑定事件、计算两点距离...

    Android studio 百度地图开发(6)Marker绑定事件.计算两点距离 email:chentravelling@163.com 开发环境:win7 64位,Android Studio, ...

  3. 基于Android的百度地图开发

    参考资料: android studio获得SHA1的值,然后在百度地图移动版API官网申请key Android Studio怎么查看程序的安全码获取SHA1值? http://www.codese ...

  4. [android] 百度地图开发 (二).定位城市位置和城市POI搜索

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

  5. 通过腾讯地图、高德地图、百度地图开发接口获取坐标对应的周边相关信息

    通过腾讯地图.高德地图.百度地图开发接口获取坐标对应的周边相关信息 更新: 以前出于好意暴露了个人的KEY,现已被烂用.为不影响您的业务,请使用我的KEY的朋友去申请自己的KEY,我的KEY将在不久后 ...

  6. C#的百度地图开发(一)发起HTTP请求

    C#的百度地图开发(一)发起HTTP请求 原文:C#的百度地图开发(一)发起HTTP请求 百度地图的开发文档中给出了很多的事例,而当用到具体的语言来开发时,又会有些差异.我是使用C#来开发的.在获取相 ...

  7. Android 百度地图开发(三)--- 实现比例尺功能和替换自带的缩放组件

    转载请注明出处:http://blog.csdn.net/xiaanming/article/details/11821523 貌似有些天没有写博客了,前段时间在忙找工作的事,面试了几家公司,表示反响 ...

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

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

  9. 谷歌 地图 android studio,Android Studio百度地图开发(一)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 本人用Android Studio做百度地图开发,调试了一整天,始终无法通过.然后怀疑代码有问题,就换Eclipse进行代码编写,毕竟网上关于Eclips ...

  10. 百度地图开发技术方案及解决办法

    技术方案及解决办法 文章目录 技术方案及解决办法 总体方案 基础框架 前端网页 后端程序 结合搭建方法 跨域解决 python处理excel 问题描述 解决办法 网页结构 vue实例 内容引入 ele ...

最新文章

  1. 面试官:你能聊聊高并发下的接口幂等性如何实现吗?
  2. 使用Hugo搭建自己的个人博客网站
  3. iOS组件化方案的几种实现
  4. 与html相关的知识点整理
  5. 【翻译】Programming Ruby——数组,哈希表和控制结构
  6. RxAndroid2 / RxJava2简单的CompletableObserver
  7. css设置最小宽度消失,关于CSS:最小/最大宽度媒体查询没有语法意义
  8. 鼠标悬浮改变背景颜色
  9. oracle时分秒修改值_Oracle SQL Developer显示的时间包含时分秒的设置方法
  10. 博客园,我的技术摇篮
  11. OC Gen X Mac(一键制作黑苹果OpenCore EFI文件)v最新版
  12. ABAP学习笔记之五-报表的事件 [翱翔云天 ]
  13. 数字一阶低通滤波器立体解析
  14. 几年基础架构的经验之谈[42 things I learned from building a production database]
  15. symbol是c语言标识符,symbol的理解
  16. 【转载】飞秋最新版2013下载
  17. Linux服务器配置与管理项目教程(CentOS7 /RHEL 7)(第三版)题库带答案
  18. PyCharm控制台显示unicode乱码(python程序)
  19. (四)vivado Simulator仿真软件的使用
  20. 对JS文件中每个函数单独混淆加密

热门文章

  1. SSM酒店管理系统的设计与实现毕业设计源码260839
  2. ZZULIOJ1046-1050Python解法
  3. 网易云音乐java_网易云音乐被下架?掌握这几步,你也能做出网易云!
  4. 使用PPT编写一个序号抽奖
  5. 全文检索Solr面试题集锦:项目实战VS理论知识
  6. 期刊分类abcde_期刊分类
  7. Ubuntu 系统安装显卡驱动教程
  8. gis重分类失败可能原因
  9. 干燥环境对电子器件的影响
  10. Cadence每日一学_01| Cadence、Allegro、OrCAD都是什么东东?