目录

  • 百度地图
  • 创建应用
    • 获取开发版SHA1
    • 获取发布版SHA1
    • 设置包名
    • 获得一个应用
    • 创建模块
  • 下载SKD
  • HelloBaiDuMap
    • 1.配置AndroidManifest.xml文件
    • 2.在布局文件中添加地图容器
    • 3.地图初始化
    • 4.创建地图Activity,管理MapView生命周期
  • 切换地图类型

百度地图

百度地图 Android SDK是一套基于Android 4.0及以上版本设备的应用程序接口。 您可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,您可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序。

本文参考官方文档:https://lbsyun.baidu.com/index.php?title=androidsdk


创建应用

访问网站 https://lbsyun.baidu.com/apiconsole/key 登录,点击-应用管理-我的应用,找到创建应用。

更改应用类型,选择Android SDK,并且设置应用名称,本人设置为MyMap,默认服务全部打开。

获取开发版SHA1

找到.android文件夹(通常在C:\Users\.android),在文件路径输入cmd(要使用用管理员模式),打开控制台,使用命令 keytool -list -v -keystore debug.keystore,密钥库口令默认值为:android,从指纹证书中获取SHA1。(复制时不能有多余的字符)

获取发布版SHA1

在Android Studio菜单找到bulid,按以下步骤(太多了不想写了,嘻嘻^ ^)

选择cancel。(没显示的界面就是点next)

然后在刚刚填写的路径找到MyMap.jks,在文件路径输入cmd(要使用用管理员模式),打开控制台,使用命令 keytool -list -v -keystore MyMap.jks,密钥库口令是刚刚设置的密码,从指纹证书中获取SHA1。(复制时不能有多余的字符)

设置包名

获得一个应用

创建模块


下载SKD

下载地址
点击下载开发包

得到开发包,解压在lib文件夹中找到jar包,复制。

粘贴到项目的lib中

在src/main/目录下新建jniLibs目录(如果您的项目中已经包含该目录不用重复创建),在下载的开发包中拷贝项目中需要的CPU架构对应的so文件文件夹到jniLibs目录,如图:

然后在mymap目录的build.gradle的dependencies块中生成了工程所依赖的jar文件的对应说明,添加以下代码:

    implementation files('libs/BaiduLBS_Android.jar')

然后点击同步则完成了SDK的配置。


HelloBaiDuMap

1.配置AndroidManifest.xml文件

        //权限声明<!-- 访问网络,进行地图相关业务数据请求,包括地图数据,路线规划,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" />
<application>  <meta-data  android:name="com.baidu.lbsapi.API_KEY"  //在百度平台开放平台-我的应用-访问应用(AK)android:value="7Hf0bGUeCtadDfOR7dxdLAzvHnZxnwLK" />
</application>

2.在布局文件中添加地图容器

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

3.地图初始化

在com.MyMap下新建一个MapApp.class,在其onCreate方法中完成SDK的初始化。示例代码如下:

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

在AndroidManifest.xml文件中注册

    android:name=".MapApp"

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

MainActivity文件代码如下:

package com.MyMap;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import com.baidu.mapapi.map.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();}@Overrideprotected void onDestroy() {super.onDestroy();//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理mMapView.onDestroy();}
}

应用效果如下:


切换地图类型

百度地图SDK为您提供了3种类型的地图资源(普通矢量地图、卫星图和空白地图)

类型名称 Value
普通地图 MAP_TYPE_NORMAL
卫星图 MAP_TYPE_SATELLITE

另外还有其他的地图类型:

类型名称 函数
交通图 setTrafficEnabled(true)
热力图 setBaiduHeatMapEnabled(true)

MainActivity文件代码如下:

public class MainActivity extends AppCompatActivity {private MapView mMapView = null;private RadioGroup mapType;private RadioButton nombtn;private RadioButton sabtn;private CheckBox lubtn;private CheckBox rebtn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//获取地图控件引用mMapView = (MapView) findViewById(R.id.bmapView);mapType = findViewById(R.id.id_rp_mapType);nombtn = findViewById(R.id.id_normal);sabtn = findViewById(R.id.id_satel);lubtn= findViewById(R.id.id_lukuan);rebtn=findViewById(R.id.id_reli);initEvent();}private void initEvent(){mapType.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup radioGroup, int i) {if (i==nombtn.getId()){mMapView.getMap().setMapType(BaiduMap.MAP_TYPE_NORMAL);}else if (i==sabtn.getId()){mMapView.getMap().setMapType(BaiduMap.MAP_TYPE_SATELLITE);}}});lubtn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton compoundButton, boolean b) {mMapView.getMap().setTrafficEnabled(b);}});rebtn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(CompoundButton compoundButton, boolean b) {mMapView.getMap().setBaiduHeatMapEnabled(b);}});}@Overrideprotected void onResume() {super.onResume();//在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();//在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理mMapView.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();//在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理mMapView.onDestroy();}
}

布局的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"android:orientation="vertical"tools:context=".MainActivity"><LinearLayoutandroid:layout_width="wrap_content"android:orientation="horizontal"android:layout_height="wrap_content"><RadioGroupandroid:id="@+id/id_rp_mapType"android:orientation="horizontal"android:layout_width="match_parent"android:layout_height="wrap_content"android:checkedButton="@id/id_normal"><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/id_normal"android:text="普通地图"></RadioButton><RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/id_satel"android:text="卫星地图"></RadioButton></RadioGroup><CheckBoxandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/id_lukuan"android:checked="false"android:text="路况图"></CheckBox><CheckBoxandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/id_reli"android:checked="false"android:text="热力图"></CheckBox></LinearLayout><com.baidu.mapapi.map.MapViewandroid:id="@+id/bmapView"android:layout_width="match_parent"android:layout_height="match_parent"android:visibility="visible"android:clickable="true" />
</LinearLayout>

应用效果如下:

Android—百度地图的简单使用相关推荐

  1. Android百度地图之位置定位和附近查找代码简单实现 (上)

    很长时间没有做Android相关知识了,闲暇之余再弄了弄最新的百度地图API,主要是进行百度地图附近餐馆查找功能来练练手,同时熟悉下最新的API教程.文章比较基础,也希望对你有所帮助~参考前文:   ...

  2. Android 百度地图 简单实现--- 美食搜索

    Android 百度地图 简单实现---  美食 依赖包: 添加 Android 百度依赖包: 1  key:  <!--        开发者 key --> <meta-data ...

  3. android 百度地图简单使用(android Studio )

    最近由于项目需要定位以及地图功能,于是学习了百度地图的简单使用,下面总结下百度地图开发的几个步骤: 1.申请百度账号  --链接地址:https://passport.baidu.com/v2/?lo ...

  4. android百度地图覆盖物异步加载图片,Android 百度地图marker中图片不显示的解决方法(推荐)...

    目的: 根据提供的多个经纬度,显示所在地的marker样式,如下: 问题: 1.发现marker中在线加载的图片无法显示出来: 2.获取多个对象后,却只显示出了一个marker: 以下为官网实现方法: ...

  5. [android] 百度地图开发 (一).申请AK显示地图及解决显示空白网格问题

        最近做android百度地图,但是使用baidumapapi_v2_3_1.jar和libBaiduMapSDK_v2_3_1.so显示百度地图时总是遇到问题--只显示网格而没有显示地图,网络 ...

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

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

  7. android百度地图API 骑行,步行导航的DEMO以及途径点问题

    android百度地图API的简单骑行,步行的导航demo,以及关于多个路径点问题的说明 ##注:目前基础百度地图API的步行以及骑行是不支持多个路径点的,只能单点对单点的,如果你真的想多个途径点导航 ...

  8. Android百度地图短链分享的使用

    首先,什么是短链分享?这里引用百度地图官方的说明: 什么是位置短地址分享 位置短地址分享(简称短串分享),是指用户检索得到的每一个地理位置都会对应一条短链接,通过短信.邮件或第三方分享组件,用户可以将 ...

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

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

最新文章

  1. placeholder的样式设置
  2. CentOS Linux最常用命令及快捷键整理
  3. android通讯录上传服务器,Android 实现读取通讯录并上传服务器
  4. 应该是最全的算法学习路线了吧法学习路线了吧
  5. [elk]elasticsearch dsl语句
  6. 指针在c语言中的运用,怎么理解C语言中的指针,如何运用?
  7. linux php sphinx拓展,Centos安装php扩展sphinx
  8. 8月7日 使用Jquery做表格的隔行变色,点击事件
  9. HTTPs SSL OV、DV和EV证书的区别
  10. D3D11 加载静态3D模型(.obj格式)
  11. 网络策略(networkpolicy随笔记)
  12. QQ防红跳转短网址生成网站源码(91she完整源码)
  13. 启动Spring项目报错,Springboot启动报错 Disconnected from the target VM 解决过程
  14. bable转换html里面的js,如何使用babel,把写好的es6代码,转化为es5,让ie8兼容。...
  15. x264源码分析与应用示例(一)——视频编码基本流程
  16. 2023年美赛(MCM/ICM)简介
  17. Linux学习-66-系统日志管理
  18. 让每一天有意义,一生的学习软件推荐
  19. 电感(29)之铁氧体磁珠工作原理透彻详解
  20. APAHRSSTFPQRPTRAGRQTQLLRS|909409-88-7

热门文章

  1. 吃透8图1模板,人人可以做架构
  2. 模拟电路课程设计【音响系统设计】
  3. 模拟电路如何入门?刚入职不会设计怎么办?模拟电路设计入门系列
  4. 数据库三四级备考经验分享——操作系统原理知识点篇
  5. 阿莫西林 阿司匹林 盘尼西林 分不清楚?
  6. 前端监控 SDK 开发分享
  7. 音乐制作软件Ableton Live 11 Suite for Mac
  8. 网络购物成瘾,你该如何戒掉?
  9. C实战——高配版贪吃蛇游戏设计
  10. IDM“无法继续下载该文件”的解决方法图文教程