【Android App】利用腾讯地图获取地点信息和规划导航线路讲解及实战(附源码和演示视频 超详细必看)
创始人
2024-03-06 04:11:54
0

需要源码请点赞关注收藏后评论区留言~~~

一、获取地点信息

至于如何集成腾讯地图和调用腾讯地图接口此处不再赘述,有需要请参见我之前的博客

腾讯地图用来搜索POI地点的工具是TencentSearch,通过它查询POI主要分为下列四个步骤: (1)创建一个腾讯搜索对象TencentSearch;

(2)区分条件构建搜索类型;

(3)按照搜索类型和关键词构建搜索参数SearchParam,并设置搜索结果的分页大小和检索页码;

(4)调用腾讯搜索对象的search方法,根据搜索参数查找符合条件的地点列表。

运行测试App效果如下 可以自行定义终点 

 

 代码如下

Java类

package com.example.location;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;import com.example.location.util.MapTencentUtil;
import com.tencent.lbssearch.TencentSearch;
import com.tencent.lbssearch.httpresponse.BaseObject;
import com.tencent.lbssearch.httpresponse.HttpResponseListener;
import com.tencent.lbssearch.object.param.SearchParam;
import com.tencent.lbssearch.object.result.SearchResultObject;
import com.tencent.map.geolocation.TencentLocation;
import com.tencent.map.geolocation.TencentLocationListener;
import com.tencent.map.geolocation.TencentLocationManager;
import com.tencent.map.geolocation.TencentLocationRequest;
import com.tencent.tencentmap.mapsdk.maps.CameraUpdate;
import com.tencent.tencentmap.mapsdk.maps.CameraUpdateFactory;
import com.tencent.tencentmap.mapsdk.maps.MapView;
import com.tencent.tencentmap.mapsdk.maps.TencentMap;
import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptor;
import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptorFactory;
import com.tencent.tencentmap.mapsdk.maps.model.LatLng;
import com.tencent.tencentmap.mapsdk.maps.model.Marker;
import com.tencent.tencentmap.mapsdk.maps.model.MarkerOptions;
import com.tencent.tencentmap.mapsdk.maps.model.PolygonOptions;
import com.tencent.tencentmap.mapsdk.maps.model.PolylineOptions;import java.util.ArrayList;
import java.util.List;public class MapSearchActivity extends AppCompatActivityimplements TencentLocationListener, TencentMap.OnMapClickListener {private final static String TAG = "MapSearchActivity";private TextView tv_scope_desc; // 声明一个文本视图对象private EditText et_searchkey; // 声明一个编辑框对象private EditText et_city; // 声明一个编辑框对象private int mSearchMethod; // 搜索类型private String[] mSearchArray = {"搜城市", "搜周边"};private int SEARCH_CITY = 0; // 搜城市private int SEARCH_NEARBY = 1; // 搜周边@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_map_search);initView(); // 初始化视图initMethodSpinner(); // 初始化搜索方式下拉框initLocation(); // 初始化定位服务initSearch(); // 初始化搜索服务}// 初始化视图private void initView() {tv_scope_desc = findViewById(R.id.tv_scope_desc);et_city = findViewById(R.id.et_city);et_searchkey = findViewById(R.id.et_searchkey);findViewById(R.id.btn_clear_data).setOnClickListener(v -> {et_city.setText("");et_searchkey.setText("");mTencentMap.clearAllOverlays(); // 清除所有覆盖物mPosList.clear();isPolygon = false;});}// 初始化搜索方式下拉框private void initMethodSpinner() {Spinner sp_method = findViewById(R.id.sp_method);ArrayAdapter county_adapter = new ArrayAdapter<>(this,R.layout.item_select, mSearchArray);sp_method.setPrompt("请选择POI搜索方式");sp_method.setAdapter(county_adapter);sp_method.setOnItemSelectedListener(new MethodSelectedListener());sp_method.setSelection(0);}class MethodSelectedListener implements AdapterView.OnItemSelectedListener {public void onItemSelected(AdapterView arg0, View arg1, int arg2, long arg3) {mSearchMethod = arg2;if (mSearchMethod == SEARCH_CITY) {tv_scope_desc.setText("市内找");} else if (mSearchMethod == SEARCH_NEARBY) {tv_scope_desc.setText("米内找");}et_city.setText("");et_searchkey.setText("");}public void onNothingSelected(AdapterView arg0) {}}// 以下是定位代码private TencentLocationManager mLocationManager; // 声明一个腾讯定位管理器对象private MapView mMapView; // 声明一个地图视图对象private TencentMap mTencentMap; // 声明一个腾讯地图对象private boolean isFirstLoc = true; // 是否首次定位private LatLng mLatLng; // 当前位置的经纬度// 初始化定位服务private void initLocation() {mMapView = findViewById(R.id.mapView);mTencentMap = mMapView.getMap(); // 获取腾讯地图对象mTencentMap.setOnMapClickListener(this); // 设置地图的点击监听器mLocationManager = TencentLocationManager.getInstance(this);// 创建腾讯定位请求对象TencentLocationRequest request = TencentLocationRequest.create();request.setInterval(30000).setAllowGPS(true);request.setRequestLevel(TencentLocationRequest.REQUEST_LEVEL_ADMIN_AREA);mLocationManager.requestLocationUpdates(request, this); // 开始定位监听}@Overridepublic void onLocationChanged(TencentLocation location, int resultCode, String resultDesc) {if (resultCode == TencentLocation.ERROR_OK) { // 定位成功if (location != null && isFirstLoc) { // 首次定位isFirstLoc = false;// 创建一个经纬度对象mLatLng = new LatLng(location.getLatitude(), location.getLongitude());CameraUpdate update = CameraUpdateFactory.newLatLngZoom(mLatLng, 12);mTencentMap.moveCamera(update); // 把相机视角移动到指定地点// 从指定图片中获取位图描述BitmapDescriptor bitmapDesc = BitmapDescriptorFactory.fromResource(R.drawable.icon_locate);MarkerOptions ooMarker = new MarkerOptions(mLatLng).draggable(false) // 不可拖动.visible(true).icon(bitmapDesc).snippet("这是您的当前位置");mTencentMap.addMarker(ooMarker); // 往地图添加标记}} else { // 定位失败Log.d(TAG, "定位失败,错误代码为"+resultCode+",错误描述为"+resultDesc);}}@Overridepublic void onStatusUpdate(String s, int i, String s1) {}@Overrideprotected void onStart() {super.onStart();mMapView.onStart();}@Overrideprotected void onStop() {super.onStop();mMapView.onStop();}@Overridepublic void onPause() {super.onPause();mMapView.onPause();}@Overridepublic void onResume() {super.onResume();mMapView.onResume();}@Overrideprotected void onDestroy() {super.onDestroy();mLocationManager.removeUpdates(this); // 移除定位监听mMapView.onDestroy();}// 以下是POI搜索代码private TencentSearch mTencentSearch; // 声明一个腾讯搜索对象private int mLoadIndex = 1; // 搜索结果的第几页// 初始化搜索服务private void initSearch() {// 创建一个腾讯搜索对象mTencentSearch = new TencentSearch(this);findViewById(R.id.btn_search).setOnClickListener(v -> searchPoi());findViewById(R.id.btn_next_data).setOnClickListener(v -> {mLoadIndex++;mTencentMap.clearAllOverlays(); // 清除所有覆盖物searchPoi(); // 搜索指定的地点列表});}// 搜索指定的地点列表public void searchPoi() {Log.d(TAG, "editCity=" + et_city.getText().toString()+ ", editSearchKey=" + et_searchkey.getText().toString()+ ", mLoadIndex=" + mLoadIndex);String keyword = et_searchkey.getText().toString();String value = et_city.getText().toString();SearchParam searchParam = new SearchParam();if (mSearchMethod == SEARCH_CITY) { // 城市搜索SearchParam.Region region = new SearchParam.Region(value) // 设置搜索城市.autoExtend(false); // 设置搜索范围不扩大searchParam = new SearchParam(keyword, region); // 构建地点检索} else if (mSearchMethod == SEARCH_NEARBY) { // 周边搜索int radius = Integer.parseInt(value);SearchParam.Nearby nearby = new SearchParam.Nearby(mLatLng, radius).autoExtend(false); // 不扩大搜索范围searchParam = new SearchParam(keyword, nearby); // 构建地点检索}searchParam.pageSize(10); // 每页大小searchParam.pageIndex(mLoadIndex); // 第几页// 根据搜索参数查找符合条件的地点列表mTencentSearch.search(searchParam, new HttpResponseListener() {@Overridepublic void onFailure(int arg0, String arg2, Throwable arg3) {Toast.makeText(getApplicationContext(), arg2, Toast.LENGTH_LONG).show();}@Overridepublic void onSuccess(int arg0, BaseObject arg1) {if (arg1 == null) {return;}SearchResultObject obj = (SearchResultObject) arg1;if(obj.data==null || obj.data.size()==0){return;}// 将地图中心坐标移动到检索到的第一个地点CameraUpdate update = CameraUpdateFactory.newLatLngZoom(obj.data.get(0).latLng, 12);mTencentMap.moveCamera(update); // 把相机视角移动到指定地点// 将其他检索到的地点在地图上用 marker 标出来for (SearchResultObject.SearchResultData data : obj.data){Log.d(TAG,"title:"+data.title + ";" + data.address);// 往地图添加标记mTencentMap.addMarker(new MarkerOptions(data.latLng).title(data.title).snippet(data.address));}}});}// 下面是绘图代码private int lineColor = 0x55FF0000;private int textColor = 0x990000FF;private int polygonColor = 0x77FFFF00;private int radiusLimit = 100;private List mPosList = new ArrayList<>();private boolean isPolygon = false;// 往地图上添加一个点private void addDot(LatLng pos) {if (isPolygon) {mPosList.clear();isPolygon = false;}boolean isFirst = false;LatLng thisPos = pos;if (mPosList.size() > 0) {LatLng firstPos = mPosList.get(0);int distance = (int) Math.round(MapTencentUtil.getShortDistance(thisPos.longitude, thisPos.latitude,firstPos.longitude, firstPos.latitude));if (mPosList.size() == 1 && distance <= 0) { // 多次点击起点,要忽略之return;} else if (mPosList.size() > 1) {LatLng lastPos = mPosList.get(mPosList.size() - 1);int lastDistance = (int) Math.round(MapTencentUtil.getShortDistance(thisPos.longitude, thisPos.latitude,lastPos.longitude, lastPos.latitude));if (lastDistance <= 0) { // 重复响应当前位置的点击,要忽略之return;}}if (distance < radiusLimit * 2) {thisPos = firstPos;isFirst = true;}Log.d(TAG, "distance=" + distance + ", radiusLimit=" + radiusLimit + ", isFirst=" + isFirst);// 画直线LatLng lastPos = mPosList.get(mPosList.size() - 1);List pointList = new ArrayList<>();pointList.add(lastPos);pointList.add(thisPos);PolylineOptions ooPolyline = new PolylineOptions().width(2).color(lineColor).addAll(pointList);// 下面计算两点之间距离distance = (int) Math.round(MapTencentUtil.getShortDistance(thisPos.longitude, thisPos.latitude,lastPos.longitude, lastPos.latitude));String disText;if (distance > 1000) {disText = Math.round(distance * 10 / 1000) / 10d + "公里";} else {disText = distance + "米";}PolylineOptions.SegmentText segment = new PolylineOptions.SegmentText(0, 1, disText);PolylineOptions.Text text = new PolylineOptions.Text.Builder(segment).color(textColor).size(15).build();ooPolyline.text(text);mTencentMap.addPolyline(ooPolyline); // 往地图上添加一组连线}if (!isFirst) {// 从指定图片中获取位图描述BitmapDescriptor bitmapDesc = BitmapDescriptorFactory.fromResource(R.drawable.icon_geo);MarkerOptions ooMarker = new MarkerOptions(thisPos).draggable(false) // 不可拖动.visible(true).icon(bitmapDesc);mTencentMap.addMarker(ooMarker); // 往地图添加标记// 设置地图标记的点击监听器mTencentMap.setOnMarkerClickListener(marker -> {LatLng markPos = marker.getPosition();addDot(markPos); // 往地图上添加一个点marker.showInfoWindow(); // 显示标记的信息窗口return true;});} else {if (mPosList.size() < 3) { // 可能存在地图与标记同时响应点击事件的情况mPosList.clear();isPolygon = false;return;}// 画多边形PolygonOptions ooPolygon = new PolygonOptions().addAll(mPosList).strokeColor(0xFF00FF00).strokeWidth(3).fillColor(polygonColor);mTencentMap.addPolygon(ooPolygon); // 往地图上添加多边形isPolygon = true;}mPosList.add(thisPos);}@Overridepublic void onMapClick(LatLng arg0) {addDot(arg0); // 往地图上添加一个点}}

二、规划导航线路

腾讯地图导航功能的使用过程主要分成下列两个步骤:

(1)区分条件构建出行参数

1)准备步行的话,要构建步行参数WalkingParam;

2)准备驾车的话,要构建驾驶参数DrivingParam。

(2)创建一个腾讯搜索对象,再调用搜索对象的getRoutePlan方法,根据出行参数规划导航路线。

演示视频如下 为动态动画

Android导航路线动态图

随着时间的推移 地图上的图标会自行移动向目的的 

 

 

 代码如下

Java类

package com.example.location;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.util.Log;
import android.widget.RadioGroup;
import android.widget.Toast;import com.tencent.lbssearch.TencentSearch;
import com.tencent.lbssearch.httpresponse.HttpResponseListener;
import com.tencent.lbssearch.object.param.DrivingParam;
import com.tencent.lbssearch.object.param.WalkingParam;
import com.tencent.lbssearch.object.result.DrivingResultObject;
import com.tencent.lbssearch.object.result.WalkingResultObject;
import com.tencent.map.geolocation.TencentLocation;
import com.tencent.map.geolocation.TencentLocationListener;
import com.tencent.map.geolocation.TencentLocationManager;
import com.tencent.map.geolocation.TencentLocationRequest;
import com.tencent.tencentmap.mapsdk.maps.CameraUpdate;
import com.tencent.tencentmap.mapsdk.maps.CameraUpdateFactory;
import com.tencent.tencentmap.mapsdk.maps.MapView;
import com.tencent.tencentmap.mapsdk.maps.TencentMap;
import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptor;
import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptorFactory;
import com.tencent.tencentmap.mapsdk.maps.model.LatLng;
import com.tencent.tencentmap.mapsdk.maps.model.LatLngBounds;
import com.tencent.tencentmap.mapsdk.maps.model.Marker;
import com.tencent.tencentmap.mapsdk.maps.model.MarkerOptions;
import com.tencent.tencentmap.mapsdk.maps.model.PolylineOptions;
import com.tencent.tencentmap.mapsdk.vector.utils.animation.MarkerTranslateAnimator;import java.util.ArrayList;
import java.util.List;public class MapNavigationActivity extends AppCompatActivityimplements TencentLocationListener, TencentMap.OnMapClickListener {private final static String TAG = "MapNavigationActivity";private RadioGroup rg_type; // 声明一个单选组对象private TencentLocationManager mLocationManager; // 声明一个腾讯定位管理器对象private MapView mMapView; // 声明一个地图视图对象private TencentMap mTencentMap; // 声明一个腾讯地图对象private boolean isFirstLoc = true; // 是否首次定位private LatLng mMyPos; // 当前的经纬度private List mPosList = new ArrayList<>(); // 起点和终点private List mRouteList = new ArrayList<>(); // 导航路线列表@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_map_navigation);initLocation(); // 初始化定位服务initView(); // 初始化视图}// 初始化视图private void initView() {rg_type = findViewById(R.id.rg_type);rg_type.setOnCheckedChangeListener((group, checkedId) -> showRoute());findViewById(R.id.btn_start).setOnClickListener(v -> {if (mPosList.size() < 2) {Toast.makeText(this, "请选中起点和终点后再出发", Toast.LENGTH_SHORT).show();} else {playDriveAnim(); // 播放行驶过程动画}});findViewById(R.id.btn_reset).setOnClickListener(v -> {mTencentMap.clearAllOverlays(); // 清除所有覆盖物mPosList.clear();mRouteList.clear();showMyMarker(); // 显示我的位置标记});}private Marker mMarker; // 声明一个小车标记// 播放行驶过程动画private void playDriveAnim() {if (mPosList.size() < 2) {return;}if (mMarker != null) {mMarker.remove(); // 移除地图标记}// 从指定图片中获取位图描述BitmapDescriptor bitmapDesc = BitmapDescriptorFactory.fromResource(R.drawable.car);MarkerOptions ooMarker = new MarkerOptions(mRouteList.get(0)).anchor(0.5f, 0.5f).icon(bitmapDesc).flat(true).clockwise(false);mMarker = mTencentMap.addMarker(ooMarker); // 往地图添加标记LatLng[] routeArray = mRouteList.toArray(new LatLng[mRouteList.size()]);// 创建平移动画MarkerTranslateAnimator anim = new MarkerTranslateAnimator(mMarker, 50 * 1000, routeArray, true);// 动态调整相机视角mTencentMap.animateCamera(CameraUpdateFactory.newLatLngBounds(LatLngBounds.builder().include(mRouteList).build(), 50));anim.startAnimation(); // 开始播放动画}// 初始化定位服务private void initLocation() {mMapView = findViewById(R.id.mapView);mTencentMap = mMapView.getMap(); // 获取腾讯地图对象mTencentMap.setOnMapClickListener(this); // 设置地图的点击监听器mLocationManager = TencentLocationManager.getInstance(this);// 创建腾讯定位请求对象TencentLocationRequest request = TencentLocationRequest.create();request.setInterval(30000).setAllowGPS(true);request.setRequestLevel(TencentLocationRequest.REQUEST_LEVEL_ADMIN_AREA);mLocationManager.requestLocationUpdates(request, this); // 开始定位监听}// 显示我的位置标记private void showMyMarker() {CameraUpdate update = CameraUpdateFactory.newLatLngZoom(mMyPos, 12);mTencentMap.moveCamera(update); // 把相机视角移动到指定地点showPosMarker(mMyPos, R.drawable.icon_locate, "这是您的当前位置"); // 显示位置标记}// 显示位置标记private void showPosMarker(LatLng latLng, int imageId, String desc) {// 从指定图片中获取位图描述BitmapDescriptor bitmapDesc = BitmapDescriptorFactory.fromResource(imageId);MarkerOptions ooMarker = new MarkerOptions(latLng).draggable(false) // 不可拖动.visible(true).icon(bitmapDesc).snippet(desc);mTencentMap.addMarker(ooMarker); // 往地图添加标记}@Overridepublic void onLocationChanged(TencentLocation location, int resultCode, String resultDesc) {if (resultCode == TencentLocation.ERROR_OK) { // 定位成功if (location != null && isFirstLoc) { // 首次定位isFirstLoc = false;// 创建一个经纬度对象mMyPos = new LatLng(location.getLatitude(), location.getLongitude());showMyMarker(); // 显示我的位置标记}} else { // 定位失败Log.d(TAG, "定位失败,错误代码为"+resultCode+",错误描述为"+resultDesc);}}@Overridepublic void onStatusUpdate(String s, int i, String s1) {}@Overridepublic void onMapClick(LatLng latLng) {mPosList.add(latLng);if (mPosList.size() == 1) {showPosMarker(latLng, R.drawable.icon_geo, "起点"); // 显示位置标记}showRoute(); // 展示导航路线}// 展示导航路线private void showRoute() {if (mPosList.size() >= 2) {mRouteList.clear();LatLng beginPos = mPosList.get(0); // 获取起点LatLng endPos = mPosList.get(mPosList.size()-1); // 获取终点mTencentMap.clearAllOverlays(); // 清除所有覆盖物showPosMarker(beginPos, R.drawable.icon_geo, "起点"); // 显示位置标记showPosMarker(endPos, R.drawable.icon_geo, "终点"); // 显示位置标记if (rg_type.getCheckedRadioButtonId() == R.id.rb_walk) {getWalkingRoute(beginPos, endPos); // 规划步行导航} else {getDrivingRoute(beginPos, endPos); // 规划行车导航}}}// 规划步行导航private void getWalkingRoute(LatLng beginPos, LatLng endPos) {WalkingParam walkingParam = new WalkingParam();walkingParam.from(beginPos); // 指定步行的起点walkingParam.to(endPos); // 指定步行的终点// 创建一个腾讯搜索对象TencentSearch tencentSearch = new TencentSearch(getApplicationContext());Log.d(TAG, "checkParams:" + walkingParam.checkParams());// 根据步行参数规划导航路线tencentSearch.getRoutePlan(walkingParam, new HttpResponseListener() {@Overridepublic void onSuccess(int statusCode, WalkingResultObject object) {if (object==null || object.result==null || object.result.routes==null) {Log.d(TAG, "导航路线为空");return;}Log.d(TAG, "message:" + object.message);for (WalkingResultObject.Route result : object.result.routes) {mRouteList.addAll(result.polyline);// 往地图上添加一组连线mTencentMap.addPolyline(new PolylineOptions().addAll(mRouteList).color(0x880000ff).width(20));}}@Overridepublic void onFailure(int statusCode, String responseString, Throwable throwable) {Log.d(TAG, statusCode + "  " + responseString);}});}// 规划行车导航private void getDrivingRoute(LatLng beginPos, LatLng endPos) {// 创建导航参数DrivingParam drivingParam = new DrivingParam(beginPos, endPos);// 指定道路类型为主路drivingParam.roadType(DrivingParam.RoadType.ON_MAIN_ROAD);drivingParam.heading(90); // 起点位置的车头方向drivingParam.accuracy(5); // 行车导航的精度,单位米// 创建一个腾讯搜索对象TencentSearch tencentSearch = new TencentSearch(this);// 根据行车参数规划导航路线tencentSearch.getRoutePlan(drivingParam, new HttpResponseListener() {@Overridepublic void onSuccess(int statusCode, DrivingResultObject object) {if (object==null || object.result==null || object.result.routes==null) {Log.d(TAG, "导航路线为空");return;}Log.d(TAG, "message:" + object.message);for (DrivingResultObject.Route route : object.result.routes){mRouteList.addAll(route.polyline);// 往地图上添加一组连线mTencentMap.addPolyline(new PolylineOptions().addAll(mRouteList).color(0x880000ff).width(20));}}@Overridepublic void onFailure(int statusCode, String responseString, Throwable throwable) {Log.d(TAG, statusCode + "  " + responseString);}});}@Overrideprotected void onStart() {super.onStart();mMapView.onStart();}@Overrideprotected void onStop() {super.onStop();mMapView.onStop();}@Overridepublic void onPause() {super.onPause();mMapView.onPause();}@Overridepublic void onResume() {super.onResume();mMapView.onResume();}@Overrideprotected void onDestroy() {super.onDestroy();mLocationManager.removeUpdates(this); // 移除定位监听mMapView.onDestroy();}}

创作不易 觉得有帮助请点赞关注收藏~~~

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...