Android百度地图开发入门教程

  • 1.平台注册登录
  • 2.创建应用
  • 3.Android studio配置
  • 4.代码编写
  • 5.最终效果(建议真机)

1.平台注册登录

登录百度地图开放平台网站注册并登录

网址:https://lbsyun.baidu.com

2.创建应用

点击右上角控制台,然后点击左侧“我的应用”,最后点击"创建应用"



应用名随便填,应用类型选Android SDK。找到Android目录下的debug.keystore文件,并复制其文件路径。(找不到在磁盘中全局搜索debug.keystore)

在java JDK中的bin目录打开命令窗口输入keytool -list -v -keystore +刚复制的debug.keystore文件路径

密钥库口令默认为 “android” (注:输入不显示),生成成功复制SHA1内容,发布版,开发版输入内容相同

使用AS创建android项目,复制主入口activity包名,点击提交生成应用。复制其中访问应用的AK

3.Android studio配置

打开AndroidMainifest.xml 配置meta-data标签,value值为刚复制的AK值

下载开发包


根据想要的功能下载开发包(选择JAR类型)

解压下好的压缩文件,进入libs文件夹,复制所有文件

将Android studio工程类型切换成project 把复制的文件粘贴到libs中

在build.gradle中配置如图内容,点击同步


android studio切换Android工程时出现了jniLibs文件夹即为加载成功

在AndroidManifest.xml中配置百度的服务

引入各种权限配置

<!--    网络定位--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!--    GPS定位--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!--    WIFI定位--><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!--    运营商相关接口--><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!--    获取wifi权限--><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!--    写入离线定位数据--><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!--    访问网络--><uses-permission android:name="android.permission.INTERNET"></uses-permission>
<!--    android9以上前台服务--><uses-permission android:name="android.permission.FOREGROUND_SERVICE"></uses-permission><uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>

4.代码编写

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"><TextViewandroid:id="@+id/locationInfo"android:layout_width="wrap_content"android:layout_height="200dp"/><com.baidu.mapapi.map.MapViewandroid:id="@+id/mapView"android:layout_width="match_parent"android:layout_height="match_parent"android:clickable="true"></com.baidu.mapapi.map.MapView></LinearLayout>

MainActivity

public class MainActivity extends AppCompatActivity {private TextView locationInfo;//定位的对象LocationClient mLocationClient;MapView mapView;BaiduMap baiduMap=null;boolean isFirst=true;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);SDKInitializer.initialize(getApplicationContext());//百度服务初始化,在界面初始化之前加载setContentView(R.layout.activity_main);//初始化TextViewlocationInfo = findViewById(R.id.locationInfo);//初始化定位对象mLocationClient=new LocationClient(getApplicationContext());//注册监听方法mLocationClient.registerLocationListener(new MyLocationListener());//初始化地图方法mapView=findViewById(R.id.mapView);baiduMap=mapView.getMap();//设置地图样式,平面图,卫星图等baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);//设置地图显示baiduMap.setMyLocationEnabled(true);//添加权限的方法getPermission();}public void  getPermission(){ArrayList<String> permissionList = new ArrayList<>();if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED){permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);}if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE)!= PackageManager.PERMISSION_GRANTED){permissionList.add(Manifest.permission.READ_PHONE_STATE);}if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){permissionList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);}if (!permissionList.isEmpty()){String[] permissions=  permissionList.toArray(new String[permissionList.size()]);ActivityCompat.requestPermissions(MainActivity.this,permissions,1);}else {requestLocation();}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {switch (requestCode){case 1:if (grantResults.length>0){for (int result:grantResults){if (result!=PackageManager.PERMISSION_GRANTED){Toast.makeText(this, "必须同意所有权限才能使用 ", Toast.LENGTH_SHORT).show();finish();return;}}requestLocation();}else {Toast.makeText(this, "未知错误 ", Toast.LENGTH_SHORT).show();finish();}break;}}//初始化定位信息参数private void requestLocation() {initLocation();//定位启动mLocationClient.start();}private void initLocation() {LocationClientOption option=new LocationClientOption();option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选定位模式,默认高精度//LocationMode.Height_Accuracy:高精度//LocationMode.Battery_Saving:低功耗//LocationMode.Device_Sensors:仅使用设备option.setCoorType( "BD09LL");//可选,设置返回经纬度坐标类型,默认GCJ02//GCJ02:国测局坐标;// BD09LL:百度经纬度坐标;// BD09:百度墨卡托坐标;//海外地区定位,无需设置坐标类型,统一返回wGS84类型坐标option.setScanSpan(1000) ;//可选,设置发起定位请求的间隔, int类型,单位ms//如果设置为0,则代表单次定位,即仅定位一次,默认为0// 如果设置非0,需设置1000ms 以上才有效option.setOpenGps(true) ;//可选,设置是否使用gps.默认false//使用高精度和仅用设备两种定位模式的,参数必须设置为trueoption.setLocationNotify(true);//可选,设置是否当GPS有效时按照1s/1次频率输出GPS结果,默认falseoption.setIgnoreKillProcess(false) ;//可选,定位SDK 内部是一个service,并放到了独立进程。//设置是否在stop的时候杀死这个进程,默认(建议)不杀死,即setIgnoreKiLLProcess(true)option. SetIgnoreCacheException(false) ;//可选,设置是否收集Crash 信息,默认收集,即参数为falseoption.setWifiCacheTimeOut(5*60*1000);option.setEnableSimulateGps(false) ;//可选,设置是否需要过滤GPs仿真结果,默认需要,即参数为falseoption.setIsNeedAddress(true);//将参数设置到定位对徐mLocationClient.setLocOption(option);}//定位监听方法private class MyLocationListener extends BDAbstractLocationListener{@Overridepublic void onReceiveLocation(BDLocation location) {navigateTo(location);StringBuilder currentPosition = new StringBuilder( ) ;currentPosition.append("纬度:").append(location.getLatitude()).append("\n");currentPosition.append("经度:").append(location.getLongitude()). append("\n");currentPosition.append("国家: " ).append(location.getCountry()).append("\n");currentPosition.append("省:" ).append(location.getProvince()).append("\n");currentPosition.append("市: " ).append(location.getCity()).append("\n");currentPosition.append("区:" ).append(location.getDistrict()) .append("\n");currentPosition.append("村镇: ").append(location.getTown()) .append("\n");currentPosition.append("街道: ").append(location.getStreet()).append("\n");currentPosition.append("地址: ").append(location.getAddrStr( ) ).append("\n");currentPosition.append("定位方式:");if ( location.getLocType() == BDLocation.TypeGpsLocation) {currentPosition. append("GPS" ) ;}else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {currentPosition. append("网络");}locationInfo.setText(currentPosition);}}private void navigateTo(BDLocation location) {//判断只初始化一次if (isFirst) {//添加经纬度LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll);//给地图设置经纬度参数baiduMap.animateMapStatus(update);//初始化地图默认放大16倍update = MapStatusUpdateFactory.zoomTo(16f);//重新设置地图参数 ,更新baiduMap.animateMapStatus(update);isFirst=false;}MyLocationData.Builder builder = new MyLocationData.Builder();//构建对象获取经纬度builder.longitude(location.getLongitude());builder.latitude(location.getLatitude());//设置地图上的点MyLocationData locationData = builder.build();//给地图添加点baiduMap.setMyLocationData(locationData);}//    ========================定义生命周期,节省性能===========================================@Overrideprotected void onDestroy() {super.onDestroy();mapView.onDestroy();baiduMap.setMyLocationEnabled(false);mLocationClient.stop();}@Overrideprotected void onResume() {super.onResume();mapView.onResume();}@Overrideprotected void onPause() {super.onPause();mapView.onPause();}
}

5.最终效果(建议真机)

Android百度地图开发入门教程相关推荐

  1. Android百度地图API使用教程

    课1 百度地图应用 百度地图.ppt 百度地图API:API文档 http://wiki.lbsyun.baidu.com/cms/androidsdk/doc/v3_2_0/ 67个类:其中6大核心 ...

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

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

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

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

  4. Android studio百度地图SDK开发 2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划

    2020最新超详细的Android 百度地图开发讲解(3) 路线规划步行骑行驾车路线规划 开发前配置,显示基本地图,实时定位等查看之前代码,此博客紧接上一博客:https://blog.csdn.ne ...

  5. [android] 百度地图开发 (三).定位当前位置及getLastKnownLocation获取location总为空问题

           前一篇百度地图开发讲述"(二).定位城市位置和城市POI搜索",主要通过监听对象MKSearchListener类实现城市兴趣点POI(Point of Intere ...

  6. android百度地图开发

    android百度地图开发 使用android开发百度地图需要事先在百度地图开发者平台上注册账号并下载百度地图相关的工具包,之后配置到自己的程序中,具体可参考https://lbsyun.baidu. ...

  7. Android百度地图开发(二)定位之自动定位及标注(及定位几日内瓦或坐标4.9E-324问题)

    接上篇Android百度地图开发(一)之Hello BaiduMap 1.环境配置: 新增权限如下 <!-- 这个权限用于进行网络定位--> <uses-permission and ...

  8. 超详细的Android百度地图开发:在APP上定位并显示出来

    超详细的Android百度地图开发:在APP上定位并显示出来 一 写在前面 二 注册百度开发者账户.申请API KEY 三.代码实现 四.问题 五.总结 一 写在前面 由于项目所需,我需要在手机APP ...

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

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

最新文章

  1. 2021年大数据常用语言Scala(三十八):scala高级用法 隐式转换和隐式参数
  2. c#_textbox显示刷新规定行数的数据
  3. centos安装zendopcache
  4. Effective Java~44. 坚持使用标准的函数接口
  5. python中import星_【已解决】Python中递归import导入:ImportError: cannot import name
  6. java ASM看到写的比较好的文章
  7. flask从html中页面重定向,如何在成功登录后才将用户重定向到所需的HTML页面(flask python应用程序)?...
  8. SQL截取字符串和替换字段
  9. 地震(earthquake)
  10. 【U+】友加畅捷U+通用财务清理操作员密码
  11. java 如何调用数组_Java中数组的使用
  12. 网络上各种指数 总结 收集
  13. Xilinx FPGA 下载器驱动提示“系统找不到指定的路径”的解决办法
  14. @Deprecated
  15. STM32 —— OLED 屏幕入门
  16. 这些操作技巧能够让你的公众号迅速增粉
  17. Gartner发布首份中国RPA魔力象限报告,弘玑Cyclone被重点推荐
  18. 淘宝视频的跨模态检索
  19. 什么形状的蓝牙耳机戴着舒服?长时间佩戴舒服的蓝牙耳机推荐
  20. (转)Android图形系统分析与移植--六、framebuffer研究

热门文章

  1. Python, Python, Python
  2. python基础——matplotlib——scatter和plot方法中的maker参数(点的样式)
  3. 简单的java程序代码?
  4. 速卖通关键词挖掘工具_利用SEO工具挖掘同行竞争对手关键词数据快速布局网站词库...
  5. pyCUDA教程-系列学习(1):GPU结构、pyCUDA、numbapro安装及HelloGPU例子
  6. 瓦片地图面面观之投影
  7. Thread.setDaemon详解
  8. 两个例子讲清Thread的setDaemon的作用
  9. PyQt5——pyqtgraph绘图大招
  10. 网络广播mms直播地址