一 申请百度API key

百度地图API:http://developer.baidu.com/map/

百度地图开发者平台地址:http://developer.baidu.com/map/ 。点击界面的“申请密钥”,进入界面之后,点击“创建应用”按钮,我这里已经申请过,所以不需要再申请,直接创建应用即可。

Android Studio 获取调试版SHA1,如下:如果想生成release版的参照 https://blog.csdn.net/qq_34507714/article/details/78861043

  1. 输入命令  C: 进入C盘;

  2. 输入命令  cd Users\你的用户名\.android  就找到了.android;

  3. 输入命令  keytool -list -v -keystore debug.keystore  回车键;

  4. 输入密钥库口令  android  回车键,就可以看到调试版SHA1啦!

二 下载SDK

SDK下载地址:http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download

第一步:在工程app/libs目录下放入baidumapapi_vX_X_X.jar包,及so文件如下图所示,全部丢进去即可
第二步:导入jar包。菜单栏选择File->Project Structor->Modules->Dependencies,点击+号,选择File dependency,选择jar包导入。
通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。

三 代码部分

3.1 配置权限和Key

<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<!-- 获取CUID,用于鉴权,请求签名等 -->
<uses-permission android:name="com.android.launcher.permission.WRITE_SETTINGS" />
<!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 用于读取手机当前的状态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 访问网络,网络定位需要上网 -->
<uses-permission android:name="android.permission.INTERNET" />

3.2 在布局xml文件中添加地图控件

<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />

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

 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在使用SDK各组件之前初始化context信息,传入ApplicationContext
//注意该方法要再setContentView方法之前实现
SDKInitializer.initialize(getApplicationContext());
setContentView(R.layout.activity_main);
mMapView = (MapView) findViewById(R.id.bmapView);
}

3.4 执行结果

gitHub:https://github.com/MichealPan9999/BaiduApi

四 进阶训练

添加百度地图查询功能

4.1 通过中文名称转换成经纬度

/*
*根据地址得到地理坐标
*/
public void getLatAndLngByAddress() {
String addr = "";
String lat = "";
String lng = "";
try {
addr = java.net.URLEncoder.encode(address, "UTF-8");//编码
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String url = String.format("http://api.map.baidu.com/geocoder/v2/?"
+ "address=%s&ak=生成的ak&mcode=生成的安全码&output=json", addr);
Log.d("panzqww", "-----url = " + url);
URL myURL = null;
URLConnection httpsConn = null;
String[] location = null;
//进行转码
try {
myURL = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
httpsConn = (URLConnection) myURL.openConnection();//建立连接
if (httpsConn != null) {
InputStreamReader insr = new InputStreamReader(//传输数据
httpsConn.getInputStream(), "UTF-8");
BufferedReader br = new BufferedReader(insr);
String data = null;
if ((data = br.readLine()) != null) {
System.out.println(data);
location = getLocation(data);
}
insr.close();
br.close();
}
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
if (location == null || location.length < 2)
{
return;
}
this.Latitude = Double.parseDouble(location[0]);
this.Longitude = Double.parseDouble(location[1]);
}

ak及安全码获取方式:点击设置进入到配置应用中

其中对应的ak为:

安全码是:

AddressToLatitudeLongitude at = new AddressToLatitudeLongitude("江西省樟树市");
at.getLatAndLngByAddress();
getLocationByLL(at.getLatitude(), at.getLongitude());
/*
*根据经纬度前往
*/
public void getLocationByLL(double la, double lg) {
//地理坐标的数据结构
LatLng latLng = new LatLng(la, lg);
//描述地图状态将要发生的变化,通过当前经纬度来使地图显示到该位置
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
myBaiduMap.setMapStatus(msu);
}

4.2 根据经纬度定位地址

/*
*根据经纬度前往
*/
public void getLocationByLL(double la, double lg) {
//地理坐标的数据结构
LatLng latLng = new LatLng(la, lg);
//描述地图状态将要发生的变化,通过当前经纬度来使地图显示到该位置
MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);
myBaiduMap.setMapStatus(msu);
}

代码地址 github:https://github.com/MichealPan9999/BaiduApi

Android开发实战一 百度SDK的更多相关文章

  1. 我的 Android 开发实战经验总结

    我的 Android 开发实战经验总结 字数4440 阅读5137 评论43 喜欢250 曾经一直想写一篇总结 Android 开发经验的文章,预计当时的我还达不到某种水平,所以思路跟不上,下笔又捉襟 ...

  2. Xamarin Android开发实战(上册)大学霸内部资料

    Xamarin Android开发实战(上册)大学霸内部资料   试读文档下载地址:http://pan.baidu.com/s/1jGEHhhO 密码:vcfm 介绍: 本教程是国内唯一的Xamar ...

  3. Android开发实战(申明:来源于网络)

    Android开发实战(申明:来源于网络) 地址:http://so.csdn.net/so/search/s.do?q=Android%E5%BC%80%E5%8F%91%E5%AE%9E%E6%8 ...

  4. 阅读《名师讲坛--Android开发实战经典》

    一,专心,快速阅读一本书,直到深入理解,把书读厚,再读薄,你定会有收获. 二,20171214开始阅读<名师讲坛--Android开发实战经典>,但愿自己有所收获.从今天开始养成刻录学习写 ...

  5. 《Python Web开发实战》|百度网盘免费下载|Python Web开发

    <Python Web开发实战>|百度网盘免费下载|Python Web开发 提取码:rnz4 内容简介 这本书涵盖了Web开发的方方面面,可以分为如下部分: 1. 使用最新的Flask ...

  6. Android开发 对接微信分享SDK总结

    原文:Android开发 对接微信分享SDK总结 - Stars-One的杂货小窝 公司项目需要对接微信分享,本来之前准备对接友盟分享的,但友盟的分享实际参数太多,而我又只需要对接一个微信分享,于是便 ...

  7. Android 开发之集成百度地图的定位与地图展示

    app 应用中,大多数应用都具有定位功能,百度定位就成了开发人员的集成定位功能的首选,近期也在做定位功能,可是发现百度真是个大坑啊, sdk 命名更新了,相关代码却不更新,害得我花费了非常长时间来研究 ...

  8. 我的Android开发之路——百度地图开源工具获取定位信息

    定位技术在现在的移动设备上是必不可少的,许多app都会使用定位功能. 通常定位方式有两种:GPS定位:网络定位. Android系统对这两种定位方式都提供了相应的API支持,但是因为google的网络 ...

  9. Android开发实战之底部Dialog弹出效果

    在Android开发中,有很多情况下我们需要使用到对话框,遗憾的是,安卓自带的对话框样式不能满足我们实际的需要,所以往往需要我们自定义对话框,具体做法:写一个对话框继承自Dialog实现他的一个构造方 ...

随机推荐

  1. 使用Python的turtle库画圣诞树

    代码如下: from turtle import * import random import time n = 80.0 speed("fastest") screensize( ...

  2. Spring+thymeleaf

    1.导入jar包 2.配置 3.标签使用 th:text th:utext th:object th:if th:switch th:case th:each="person:userlis ...

  3. java乱码解决方法

    String name = request.getParameter("name"); 乱码解决:String name = new String(request.getParam ...

  4. javascript数据类型和常用内置对象(重要!)

    数据类型:w3c undefind  null  string  number  boolean  Array   object 常用内置javascript对象: Array对象:Date对象:正则 ...

  5. code forces 805B (水)

    #include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>#inc ...

  6. SpringBoot+BootStrap多文件上传到本地

    1.application.yml文件配置 # 文件大小 MB必须大写 # maxFileSize 是单个文件大小 # maxRequestSize是设置总上传的数据大小 spring: servle ...

  7. springboot中使用过滤器、拦截器、监听器

    监听器:listener是servlet规范中定义的一种特殊类.用于监听servletContext.HttpSession和servletRequest等域对象的创建和销毁事件.监听域对象的属性发生 ...

  8. 多次使用图片物理路径提示占用进程,用流读取设置FileShare权限解决

    //用流读取图片 清空之后再次关联地址 //设置FileShare.ReadWrite权限之后 不会提示占用进程异常 item是物理路径DiscussionImageList = new Interv ...

  9. SpringSecurity权限表达式

    * 当我们想要使用多个权限表达式的时候,是不能直接级联调用的,也就是说,我们只能手写了. @Override protected void configure(HttpSecurity http) t ...

  10. Windows PowerShell 入門(7)-関数編2

    この連載では.Microsoftが提供している新しいシェル.Windows Power Shellの使い方を解説します.前回に引き続きPowerShellにおける関数の取り扱いとして.変数と関数のスコ ...