安卓:百度地图开发(超详细)
一、百度地图介绍
百度地图SDK是一套供开发者使用的软件开发工具包(SDK),用于在Android应用程序中集成和使用百度地图功能。通过使用百度地图SDK,开发者可以实现在自己的应用中显示地图、获取定位信息、进行搜索、导航等功能。
百度地图SDK提供了许多常用的类和方法,用于实现各种地图相关功能。以下是一些常用的类及其方法:
1. MapView类:
MapView 类是百度地图SDK提供的一个控件类,用于在应用程序的界面上显示地图。它是一个自定义的 View,可以与 BaiduMap 类关联,实现地图的显示和交互功能。
常用方法:
- getMap():获取百度地图对象(BaiduMap)的实例。
- onResume():在Activity的生命周期方法中调用,用于恢复地图控件的绘制和定位功能。
- onPause():在Activity的生命周期方法中调用,用于暂停地图控件的绘制和定位功能。
- onDestroy():在Activity的生命周期方法中调用,用于销毁地图控件。
2. BaiduMap类:
BaiduMap 类是百度地图SDK中的核心类,用于管理和操作地图。它提供了一系列方法和接口,用于显示地图、控制地图状态、添加覆盖物、定位等功能。
常用方法:
- setMapType():设置地图显示类型,如普通地图、卫星地图等。
- setMapStatus():设置地图的状态,包括中心点坐标、缩放级别、倾斜角度和旋转角度等。
- addOverlay():添加覆盖物(Overlay),如标记点(Marker)、折线(Polyline)和多边形(Polygon)等。
- clear():清除地图上的所有覆盖物。
- setOnMapClickListener():设置地图点击事件监听器。
- setOnMarkerClickListener():设置标记点点击事件监听器。
3. GeoCoder类:
GeoCoder 类是百度地图SDK提供的一个地理编码和反地理编码工具类,用于将地址信息与地理坐标之间进行转换。通过 GeoCoder 类,开发者可以实现将地址解析为经纬度坐标(地理编码),或者将经纬度坐标解析为地址信息(反地理编码)。
常用方法:
- newInstance():创建 GeoCoder 实例。
- setOnGetGeoCodeResultListener():设置地理编码查询结果监听器。
- setOnGetReverseGeoCodeResultListener():设置反地理编码查询结果监听器。
- geocode():发起地理编码查询,将地址信息转换为经纬度坐标。
- reverseGeoCode():发起反地理编码查询,将经纬度坐标转换为地址信息。
4. LocationClient类:
LocationClient 类是百度定位SDK提供的核心类,用于实现设备的定位功能。通过 LocationClient 类,开发者可以获取设备的当前位置信息,包括经纬度坐标、速度、方向等。
常用方法:
- registerLocationListener():注册定位监听器。
- start():开始定位。
- stop():停止定位。
5. RoutePlanSearch类:
RoutePlanSearch 类是百度地图SDK提供的路线规划搜索类,用于实现不同交通方式的路线规划功能。通过 RoutePlanSearch 类,开发者可以根据起点和终点的坐标,进行驾车、步行、公交等多种交通方式的路线规划,并获取详细的路线信息。
常用方法:
- setOnGetRoutePlanResultListener():设置路径规划结果监听器。
- drivingSearch():发起驾车路线规划。
- walkingSearch():发起步行路线规划。
- transitSearch():发起公交路线规划。
6.LatLng 类:
LatLng 类是百度地图SDK提供的一个表示经纬度坐标的类。它用于存储地理位置的经度和纬度信息,并提供了一些方法来获取和设置经纬度值。
常用方法:
latitude():获取纬度值。longitude():获取经度值。equals(LatLng other):判断当前 LatLng 对象是否与另一个 LatLng 对象相等。toString():返回 LatLng 对象的字符串表示。
7. PoiSearch 类:
PoiSearch 类是百度地图SDK提供的一个兴趣点搜索类,用于实现地图上的兴趣点检索功能。通过 PoiSearch 类,开发者可以根据关键词、地理位置等条件进行兴趣点的搜索,并获取相关的搜索结果。
常用方法:
-
newInstance():创建 PoiSearch 实例。 searchInCity(PoiCitySearchOption option):在指定城市内搜索兴趣点。需要创建一个 PoiCitySearchOption 对象,并设置要搜索的城市名称、关键词等参数,然后调用该方法进行搜索。searchNearby(PoiNearbySearchOption option):在指定位置附近搜索兴趣点。需要创建一个 PoiNearbySearchOption 对象,并设置中心点坐标、搜索半径、关键词等参数,然后调用该方法进行搜索。searchInBound(PoiBoundSearchOption option):在指定矩形区域内搜索兴趣点。需要创建一个 PoiBoundSearchOption 对象,并设置矩形区域的左下角和右上角坐标、关键词等参数,然后调用该方法进行搜索。setOnGetPoiSearchResultListener(OnGetPoiSearchResultListener listener):设置兴趣点搜索结果的监听器。需要实现 OnGetPoiSearchResultListener 接口,并将其注册给 PoiSearch 对象,以接收搜索结果的回调。searchPoiDetail(PoiDetailSearchOption option):根据兴趣点的 UID 获取详细信息。需要创建一个 PoiDetailSearchOption 对象,并设置兴趣点的 UID,然后调用该方法进行详情查询。searchPoiIndoor(PoiIndoorOption option):在室内地图中搜索兴趣点。需要创建一个 PoiIndoorOption 对象,并设置室内ID、关键词等参数,然后调用该方法进行搜索。searchPoiPage(int pageNum):加载下一页的搜索结果。需要指定要加载的页码,通过设置之前的搜索选项对象的pageNum属性来实现分页加载。destroy():销毁 PoiSearch 对象,释放相关资源。
8.PoiResult 类:
PoiResult 类是百度地图SDK中的一个类,用于表示兴趣点搜索的结果集。它包含了符合搜索条件的一组兴趣点数据,并提供了相关的方法来获取和操作这些数据。
getAllPoi():获取搜索到的所有结果。error:表示搜索结果的错误码。
9.PoiInfo 类:
PoiInfo 类是百度地图SDK中的一个类,用于表示兴趣点的信息。它包含了兴趣点的名称、地址、经纬度坐标等详细信息,并提供了相关的方法来获取和操作这些数据。
name:POI 名称。address:POI 地址。
10.PoiOverlay 类:
PoiOverlay 类是百度地图SDK中的一个类,用于在地图上绘制兴趣点标注覆盖物。它可以将 PoiResult 中的兴趣点数据在地图上展示,并提供了一些方法用于自定义标注样式和点击事件处理。
setData():设置搜索到的 POI 数据。addToMap():将兴趣点标注添加到地图上。zoomToSpan():缩放地图以适应所有兴趣点。
二、使用例子
例1:获取当前位置:
MainActivity :
package com.example.location;import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;import android.widget.TextView;
import android.widget.Toast;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.BitmapDescriptorFactory;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MarkerOptions;
import com.baidu.mapapi.model.LatLng;import com.baidu.mapapi.search.geocode.GeoCoder;import com.baidu.mapapi.search.poi.PoiSearch;public class MainActivity extends AppCompatActivity {LocationClient mLocationClient;MapView mMapView;BaiduMap mBaiduMap;boolean isFirstLocate = true;PoiSearch mPoiSearch;TextView tv_Lat; // 经度TextView tv_Lon; // 纬度TextView tv_Add; // 地址GeoCoder mGeoCoder;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 初始化地图应用SDKInitializer.setAgreePrivacy(this.getApplicationContext(), true);LocationClient.setAgreePrivacy(true);// 初始化百度地图SDK。这个方法必须在使用百度地图相关功能之前调用,否则无法正常使用地图功能。SDKInitializer.initialize(this.getApplicationContext());setContentView(R.layout.activity_main);mMapView = findViewById(R.id.bmapView);mBaiduMap = mMapView.getMap();tv_Lat = findViewById(R.id.tv_Lat);tv_Lon = findViewById(R.id.tv_Lon);tv_Add = findViewById(R.id.tv_Add);
// search = findViewById(R.id.search);// // 初始化 PoiSearch 和 GeoCoder 对象
// mPoiSearch = PoiSearch.newInstance();
// mGeoCoder = GeoCoder.newInstance();if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);} else {requestLocation();}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {switch (requestCode) {case 1:if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {Toast.makeText(this, "没有定位权限!", Toast.LENGTH_SHORT).show();finish();} else {requestLocation();}}super.onRequestPermissionsResult(requestCode, permissions, grantResults);}private void requestLocation() {// 定位前初始化initLocation();// 发起定位mLocationClient.start();}private void initLocation() {try {mLocationClient = new LocationClient(getApplicationContext());mLocationClient.registerLocationListener(new MyLocationListener());// 定位客户端操作LocationClientOption option = new LocationClientOption();// 设置扫描时间option.setScanSpan(1000);// 设置定位模式option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);option.setIsNeedAddress(true); // 设置需要地址信息// 保存定位参数mLocationClient.setLocOption(option);} catch (Exception e) {e.printStackTrace();}}// 内部类,百度位置监听器private class MyLocationListener implements BDLocationListener {@Overridepublic void onReceiveLocation(BDLocation bdLocation) {tv_Lat.setText(String.valueOf(bdLocation.getLatitude()));tv_Lon.setText(String.valueOf(bdLocation.getLongitude()));tv_Add.setText(bdLocation.getAddrStr());// GPS 定位或网格定位时if (bdLocation.getLocType() == BDLocation.TypeGpsLocation || bdLocation.getLocType() == BDLocation.TypeNetWorkLocation) {navigateTo(bdLocation);}}private void navigateTo(BDLocation bdLocation) {if (isFirstLocate) {LatLng ll = new LatLng(bdLocation.getLatitude(), bdLocation.getLongitude());MapStatusUpdate update = MapStatusUpdateFactory.newLatLng(ll);// 以动画更新方式,实现对手势引起的地图状态的更新mBaiduMap.animateMapStatus(update);// 创建自定义标记BitmapDescriptor bitmap = BitmapDescriptorFactory.fromResource(R.drawable.arrow_icon);MarkerOptions markerOptions = new MarkerOptions().position(ll).icon(bitmap).anchor(0.5f, 0.5f);mBaiduMap.addOverlay(markerOptions);isFirstLocate = false;}}}@Overrideprotected void onResume() {super.onResume();mMapView.onResume();}@Overrideprotected void onPause() {super.onPause();mMapView.onPause();}@Overrideprotected void onDestroy() {super.onDestroy();mMapView.onDestroy();// 释放 PoiSearch 和 GeoCoder 对象
// mPoiSearch.destroy();
// mGeoCoder.destroy();}}
activity_main:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayoutxmlns: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="fill_parent"android:layout_height="fill_parent"android:clickable="true"/><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"android:background="#E0474141"><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_marginLeft="12dp"android:layout_marginTop="20dp"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="纬度:"android:textColor="#ffffff"android:textSize="15dp"/><TextViewandroid:id="@+id/tv_Lat"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text=""android:textColor="#ffffff"android:textSize="15sp"/></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_marginLeft="12dp"android:layout_marginTop="10dp"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="经度:"android:textColor="#ffffff"android:textSize="15dp"/><TextViewandroid:id="@+id/tv_Lon"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text=""android:textColor="#ffffff"android:textSize="15sp"/></LinearLayout><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:layout_marginLeft="12dp"android:layout_marginTop="10dp"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="地址:"android:textColor="#ffffff"android:textSize="15dp"/><TextViewandroid:id="@+id/tv_Add"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text=""android:textColor="#ffffff"android:textSize="15sp"/></LinearLayout></LinearLayout>
</FrameLayout>
AndroidManifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.location"><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/><uses-permission android:name="android.permission.INTERNET"/><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.UI"><meta-dataandroid:name="com.baidu.lbsapi.API_KEY"android:value="你的Key" /><activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"></service></application></manifest>
运行结果:

未完待续。。。
相关文章:
安卓:百度地图开发(超详细)
一、百度地图介绍 百度地图SDK是一套供开发者使用的软件开发工具包(SDK),用于在Android应用程序中集成和使用百度地图功能。通过使用百度地图SDK,开发者可以实现在自己的应用中显示地图、获取定位信息、进行搜索、导航等功能。 百…...
DDSv1.4规范(中文版)
实时数据分发 (DDS) V1.4 (2015-04-10正式发布) https://www.omg.org/spec/DDS/1.4/PDF http://www.omg.org/spec/DDS/20140501/dds_dcps.idl...
oracle,获取每日24*60,所有分钟数
前言: 为规范用户的时间录入,因此我们采用下拉的方式,让用户选择需要的时间,因此我们需要将一天24小时的时间拆分为类似00:00,00:01...23:00,23:01,23:59。因此我们需要生成24*601440行的下拉复选值。具体效果如下图所示。 思路 1…...
vue elementui table去掉滚动条与实现表格自动滚动且无滚动条
当table内容列过多时,可通过height属性设置table高度以固定table高度、固定表头,使table内容可以滚动。 现在需求是右侧滚动条不好看,需要去除滚动条,并隐藏滚动条所占列的位置。让他可以滚动但是不出现滚动条,不然即时隐藏了滚动…...
SDK命令行工具配置
SDK命令行工具配置 最早的Android SDK工具包,包含一些GUI的工具。 而在一些场景(如打包)只需要命令行工具时,下载 command-line tools 即可。 到 Android Studio下载页 ,找到 Command line tools only 下载。 命令…...
【数字IC基础】竞争与冒险
竞争-冒险 1. 基本概念2. 冒险的分类3. 静态冒险产生的判断4. 毛刺的消除使用同步电路使用格雷码增加滤波电容增加冗余项,消除逻辑冒险引入选通脉冲 1. 基本概念 示例一: 如上图所示的这个电路,使用了两个逻辑门,一个非门和一个与…...
速成版-带您一天学完python自动化测试(selenium)
Selenium是一套web网站的程序自动化操作解决方案。我们通过编写自动化程序,使得自动完成浏览器界面的相关操作,除了能够自动化的完成相关操作,还能从web页面获取相关信息,然后通过程序进行分析处理,本质上就是提升从网…...
windows 删除无法删除的文件
有两种原因: 文件被占用文件无权限 解决方案 通用解决方案是进入安全模式进行删除 安全模式: 不会启动非必要的进程有最高的系统权限 进入系统配置 安全引导,重启 删除文件 修改系统配置为正常启动 重启...
FFmpeg[7] - FFmpeg之预设编码参数preset
目录 前言 正文 一、定义与作用 二、取值范围 三、枚举值 四、使用实例...
CVPR2023新作:3D视频物体检测
Title: 3D Video Object Detection With Learnable Object-Centric Global Optimization Affiliation: 中国科学院自动化研究所 (Institute of Automation, Chinese Academy of Sciences),中国科学院大学人工智能学院 (School of Artificial Intelligence, Univers…...
Keepalived热备、Keepalived+LVS、HAProxy监控及后端服务器健康检查、负载均衡调度器对比
day02 day02KeepAlived高可用集群配置高可用的web集群监控本机80端口,实现主备切换实现原理实施配置高可用、负载均衡的web集群配置高可用、负载均衡HAProxy配置haproxy负载均衡调度器比较LVS(Linux Virtual Server)NginxHAProxy KeepAlive…...
用Vue开发仿旅游站webapp项目总结 (上)
写着写着发现会写不少内容... 全部写在一篇文章里感觉太多了不方便看,所以分为上下篇吧... 下篇写完啦,感兴趣的朋友可以继续关注~ > 用Vue开发仿旅游站webapp项目总结 (下) 温馨提示 此文章,仅是做完项目后的个人…...
【Koa】[NoSQL] Koa中相关介绍和使用Redis MongoDB增删改查
目录 NoSQL非关系型数据库关系型数据库(RMDB)介绍非关系型数据库(NoSQL)介绍Redis & MongoDB 在 Koa 中使用 Redis (了解)Redis 的安装和使用在 Koa 中连接 和 调用 Redis 在 Koa 中使用 MongoDBMongoDB 的安装MongoShell 操作…...
【JS 阻止滑动穿透】
在实现阻止滑动穿透时,可以使用以下方法之一: 使用 CSS 属性 overflow: hidden 来禁止页面滚动。 body {overflow: hidden; }使用 JavaScript 监听滚动事件并阻止默认行为。 document.addEventListener(touchmove, function(e) {e.preventDefault(); …...
编译原理
目录 一,基本概念 二,词法分析 三,自上而下推导 一,基本概念 二,词法分析 三,自上而下推导...
项目播报 | 新基德携手璞华易研PLM,打造企业新一代研发管理平台
近日,“新基德PLM(Product Lifecycle Management,产品生命周期管理)项目”在新基德(深圳)电子有限公司(以下简称:新基德)正式启动。新基德是一家集手机研发、生产、销售、…...
elementui el-table 封装表格
ps: 1.3版本 案例: 完整代码: 可直接复制粘贴,但一定要全看完! v-slot"scopeRows" 是vue3的写法; vue2是 slot-scope"scope" <template><!-- 简单表格、多层表头、页码、没有合并列行…...
集合--collections
一、collections概述 Collections和Arrays、Objects-一样,都是一种针对性的工具类, Arrays是针对数组,Objects是针对Object, 而Colections则是针对集合的一种工具类,里面提供了大量的方便我们操作集合的方法: //往集合中添加一些元素。 p…...
go使用gin结合jwt做登录功能
1、安装gin go get -u github.com/gin-gonic/gin 2、安装session go get github.com/gin-contrib/sessions 3、安装JWT鉴权 go get "github.com/golang-jwt/jwt/v4" 4、创建一个jwt的工具文件 package utilsimport ("errors""github.com/golan…...
【C++】开源:Boost网络库Asio配置使用
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Asio网络库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
倒装芯片凸点成型工艺
UBM(Under Bump Metallization)与Bump(焊球)形成工艺流程。我们可以将整张流程图分为三大阶段来理解: 🔧 一、UBM(Under Bump Metallization)工艺流程(黄色区域ÿ…...
ubuntu清理垃圾
windows和ubuntu 双系统,ubuntu 150GB,开发用,基本不装太多软件。但是磁盘基本用完。 1、查看home目录 sudo du -h -d 1 $HOME | grep -v K 上面的命令查看$HOME一级目录大小,发现 .cache 有26GB,.local 有几个GB&am…...
