feat: 增加道路和POI录像任务绘制辅助线的功能

This commit is contained in:
xiaoyan 2023-03-07 09:53:57 +08:00
parent baebb9e5cf
commit c5e4a216bc
9 changed files with 243 additions and 102 deletions

View File

@ -150,6 +150,9 @@ public class Constant {
public static final int CAPACITY_EVALUATION=59;//能力测试的返回
public static final int CHARGING_STATION_DISABLE=60;//能力测试的返回
public static final int EVENT_WHAT_UPLOAD_PROGRESS=61;// 数据上传的进度progress
public static final int EVENT_WHAT_CHANGE_SLIDING_STATE=62;// 改变抽屉的状态
public static final int EVENT_WHAT_START_DRAW_LINE=63;// 开始绘制参考线
public static final int EVENT_WHAT_FINISH_DRAW_LINE=64;// 完成绘制参考线
public static final String INTENT_POI_VIDEO_TYPE = "poi_video_type";
public static int NUMBER = 200; //任务个数
public static int LIMIT_TYPE = -1; //权限类型普通任务-0专属任务-1

View File

@ -175,4 +175,14 @@ public abstract class BaseDrawerFragment extends BaseFragment {
}
}
/**
* 隐藏抽屉界面
* */
public void changeSlidingLayout(int isVisible, SlidingUpPanelLayout.PanelState panelState) {
Message msg = Message.obtain();
msg.what = Constant.EVENT_WHAT_CHANGE_SLIDING_STATE;
msg.arg1 = isVisible;
msg.obj = panelState;
EventBus.getDefault().post(msg);
}
}

View File

@ -63,6 +63,7 @@ import com.navinfo.outdoor.util.TimestampUtil;
import com.navinfo.outdoor.util.ToastUtils;
import com.navinfo.outdoor.util.UploadUtils;
import com.navinfo.outdoor.util.ZipUtils;
import com.sothree.slidinguppanel.SlidingUpPanelLayout;
import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptor;
import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptorFactory;
import com.tencent.tencentmap.mapsdk.maps.model.LatLng;
@ -96,6 +97,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick
private StringBuilder poiVideoBuilder;
private LatLng rearLatLng;
private boolean booleanExtra = true;
private TextView tvDrawLine; // 绘制辅助线
public static PoiVideoFragment newInstance(Bundle bundle) {
PoiVideoFragment fragment = new PoiVideoFragment();
@ -233,7 +235,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick
@Override
public boolean onLongClick(View v) {
DialogSettings.style = DialogSettings.STYLE.STYLE_IOS;
MessageDialog.show((AppCompatActivity) Objects.requireNonNull(getContext()), "提示", "是否删除", "确定", "取消").setOkButton(new OnDialogButtonClickListener() {
MessageDialog.show((AppCompatActivity) requireActivity(), "提示", "是否删除", "确定", "取消").setOkButton(new OnDialogButtonClickListener() {
@Override
public boolean onClick(BaseDialog baseDialog, View v) {
poiVideoBuilder.append(TimestampUtil.time()).append(",").append("点击了长按删除图片的 按钮,");
@ -251,6 +253,8 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick
});
btnRoadSave = findViewById(R.id.btn_poi_video_save);
btnRoadSave.setOnClickListener(this);
tvDrawLine = findViewById(R.id.tv_draw_line_poi_video);
tvDrawLine.setOnClickListener(this::onClick);
Button btnPoiVideoUpload = findViewById(R.id.btn_poi_video_upload);
btnPoiVideoUpload.setOnClickListener(this);
//添加数据
@ -400,7 +404,7 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick
}
ivPoiVideoPicture.setImageDrawable(null);
fmPoiVideoPic.setTag(null);
} else {
} else {
boolean isImageLoad = false;
for (int i = 0; i < fileListByUUID.size(); i++) {
File videoFile = fileListByUUID.get(i);
@ -415,6 +419,13 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick
fmPoiVideoPic.setTag(fileListByUUID);
}
initPoiVideoSharePre();
} else if (data.what == Constant.EVENT_WHAT_FINISH_DRAW_LINE) {
// 显示原有抽屉画面
changeSlidingLayout(View.VISIBLE, SlidingUpPanelLayout.PanelState.COLLAPSED);
if (data.arg1 == 1) {
List<LatLng> drawPoints = (List<LatLng>) data.obj;
showPoiEntity.setDrawLine(GeometryTools.getLineString(drawPoints));
}
}
}
@ -509,9 +520,23 @@ public class PoiVideoFragment extends BaseDrawerFragment implements View.OnClick
Constant.isPresent = false;
}
break;
case R.id.tv_draw_line_poi_video:
// 开始绘制辅助线隐藏当前界面展示地图用户点击绘制线
changeSlidingLayout(View.GONE, SlidingUpPanelLayout.PanelState.HIDDEN);
startDrawLine();
break;
}
}
/**
* 开始绘制参考线
* */
private void startDrawLine() {
Message drawMsg = Message.obtain();
drawMsg.what = Constant.EVENT_WHAT_START_DRAW_LINE;
EventBus.getDefault().post(drawMsg);
}
public void initPoiSaveLocal(boolean isLocal) {
XXPermissions.with(getContext())
.permission(Permission.MANAGE_EXTERNAL_STORAGE)

View File

@ -67,6 +67,7 @@ import com.navinfo.outdoor.util.AWMp4ParserHelper;
import com.navinfo.outdoor.util.Geohash;
import com.navinfo.outdoor.util.GeometryTools;
import com.navinfo.outdoor.util.ZipUtils;
import com.sothree.slidinguppanel.SlidingUpPanelLayout;
import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptor;
import com.tencent.tencentmap.mapsdk.maps.model.BitmapDescriptorFactory;
import com.tencent.tencentmap.mapsdk.maps.model.LatLng;
@ -105,6 +106,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
private RadioGroup rgRoadStatus; // 道路状态的radioGroup
private EditText edtCheckedOther;
private int existence = 0; // 是否存在
private TextView tvDrawLine; // 绘制辅助线
public static RoadFragment newInstance(Bundle bundle) {
RoadFragment fragment = new RoadFragment();
@ -150,18 +152,18 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
if (showPoiEntity != null) {
if (showPoiEntity.getTaskStatus() == 5) {
DialogSettings.style = DialogSettings.STYLE.STYLE_IOS;
MessageDialog.show((AppCompatActivity) Objects.requireNonNull(getActivity()), "提示", "当前在任务作业中,是否退出", "确定", "取消").setOnOkButtonClickListener(new OnDialogButtonClickListener() {
MessageDialog.show((AppCompatActivity) requireActivity(), "提示", "当前在任务作业中,是否退出", "确定", "取消").setOnOkButtonClickListener(new OnDialogButtonClickListener() {
@Override
public boolean onClick(BaseDialog baseDialog, View v) {
roadBuilder.append(TimestampUtil.time()).append(",").append("点击了返回当前页面的 确定 按钮,");
initEndReceiveTask(HttpInterface.UNRECEIVED_POLYGON_TASK, showPoiEntity);
Objects.requireNonNull(getActivity()).getSupportFragmentManager().popBackStack();
requireActivity().getSupportFragmentManager().popBackStack();
return false;
}
});
} else if (showPoiEntity.getTaskStatus() == 0 || showPoiEntity.getTaskStatus() == 1) {
DialogSettings.style = DialogSettings.STYLE.STYLE_IOS;
MessageDialog.show((AppCompatActivity) Objects.requireNonNull(getActivity()), "提示", "当前在任务作业中,是否退出", "确定", "取消").setOnOkButtonClickListener(new OnDialogButtonClickListener() {
MessageDialog.show((AppCompatActivity) requireActivity(), "提示", "当前在任务作业中,是否退出", "确定", "取消").setOnOkButtonClickListener(new OnDialogButtonClickListener() {
@Override
public boolean onClick(BaseDialog baseDialog, View v) {
roadBuilder.append(TimestampUtil.time()).append(",").append("点击了返回当前页面的 确定 按钮,");
@ -187,7 +189,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
obtain1.obj = isSliding;
EventBus.getDefault().post(obtain1);
}
Objects.requireNonNull(getActivity()).getSupportFragmentManager().popBackStack();
requireActivity().getSupportFragmentManager().popBackStack();
return false;
}
});
@ -206,7 +208,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
obtain1.obj = isSliding;
EventBus.getDefault().post(obtain1);
}
Objects.requireNonNull(getActivity()).getSupportFragmentManager().popBackStack();
requireActivity().getSupportFragmentManager().popBackStack();
}
}
}
@ -264,7 +266,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
@Override
public boolean onLongClick(View v) {
DialogSettings.style = DialogSettings.STYLE.STYLE_IOS;
MessageDialog.show((AppCompatActivity) Objects.requireNonNull(getContext()), "提示", "是否删除", "确定", "取消").setOkButton(new OnDialogButtonClickListener() {
MessageDialog.show((AppCompatActivity) requireContext(), "提示", "是否删除", "确定", "取消").setOkButton(new OnDialogButtonClickListener() {
@Override
public boolean onClick(BaseDialog baseDialog, View v) {
roadBuilder.append(TimestampUtil.time()).append(",").append("点击长按删除 确定按钮,");
@ -282,6 +284,8 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
});
btnRoadSave = findViewById(R.id.btn_road_save);
btnRoadSave.setOnClickListener(this);
tvDrawLine = findViewById(R.id.tv_draw_line_road);
tvDrawLine.setOnClickListener(this::onClick);
Button roadUpload = findViewById(R.id.road_upload);
roadUpload.setOnClickListener(this);
//数据展示
@ -291,7 +295,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
@Override
protected void initData() {
super.initData();
SharedPreferences sharedPreferences = Objects.requireNonNull(getActivity()).getSharedPreferences(Constant.MESSAGE_TYPE, Context.MODE_PRIVATE);
SharedPreferences sharedPreferences = requireActivity().getSharedPreferences(Constant.MESSAGE_TYPE, Context.MODE_PRIVATE);
SharedPreferences.Editor sharedEdit = sharedPreferences.edit();
@SuppressLint("SimpleDateFormat")
DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
@ -392,7 +396,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
|| fileListByUUID.get(i).getPath().endsWith(".jpg")|| fileListByUUID.get(i).getPath().endsWith(".jpeg")) {
if (fileListByUUID.get(i).exists() && !isImageLoad) {
// 使用glide加载视频的第一帧
Glide.with(Objects.requireNonNull(getActivity())).load(fileListByUUID.get(i)).into(ivRoadPicture);
Glide.with(requireActivity()).load(fileListByUUID.get(i)).into(ivRoadPicture);
isImageLoad = true;
}
}
@ -488,6 +492,13 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
fmRoadPic.setTag(fileListByUUID);
}
initRoadSharePre();
} else if (data.what == Constant.EVENT_WHAT_FINISH_DRAW_LINE) {
// 显示原有抽屉画面
changeSlidingLayout(View.VISIBLE, SlidingUpPanelLayout.PanelState.COLLAPSED);
if (data.arg1 == 1) {
List<LatLng> drawPoints = (List<LatLng>) data.obj;
showPoiEntity.setDrawLine(GeometryTools.getLineString(drawPoints));
}
}
}
@ -601,10 +612,24 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
Constant.isPresent = false;
}
break;
case R.id.tv_draw_line_road:
// 开始绘制辅助线隐藏当前界面展示地图用户点击绘制线
changeSlidingLayout(View.GONE, SlidingUpPanelLayout.PanelState.HIDDEN);
startDrawLine();
break;
}
}
/**
* 开始绘制参考线
* */
private void startDrawLine() {
Message drawMsg = Message.obtain();
drawMsg.what = Constant.EVENT_WHAT_START_DRAW_LINE;
EventBus.getDefault().post(drawMsg);
}
public void initPoiSaveLocal(boolean isLocal) {
XXPermissions.with(getContext())
.permission(Permission.MANAGE_EXTERNAL_STORAGE)
@ -627,7 +652,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
@Override
public void run() {
InsertAndUpdateUtils.getInstance().insertOrUpdate(getContext(), poiEntity);
Objects.requireNonNull(getActivity()).runOnUiThread(new Runnable() {
requireActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
if (isLocal) {
@ -649,7 +674,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
if (never) {
ToastUtils.Message(getActivity(), "被永久拒绝授权,请手动授予权限");
// 如果是被永久拒绝就跳转到应用权限系统设置页面
XXPermissions.startPermissionActivity(Objects.requireNonNull(getActivity()), permissions);
XXPermissions.startPermissionActivity(requireActivity(), permissions);
}
}
});
@ -826,7 +851,7 @@ public class RoadFragment extends BaseDrawerFragment implements View.OnClickList
//表示文件名系统将会在/dada/dada/包名/shared_prefs目录下生成
//一个以该参数命名的.xml文件第二个mode表示创建的模式通过查看
//方法注释得知建议以0或者MODE_PRIVATE为默认值
SharedPreferences poi = Objects.requireNonNull(getActivity()).getSharedPreferences(Constant.DATA_FILE, 0);
SharedPreferences poi = requireActivity().getSharedPreferences(Constant.DATA_FILE, 0);
//获取Editor对象
SharedPreferences.Editor edit = poi.edit();
//根据要保存的数据的类型调用对应的put方法,

View File

@ -111,6 +111,7 @@ import com.tencent.tencentmap.mapsdk.maps.model.Polygon;
import com.tencent.tencentmap.mapsdk.maps.model.PolygonOptions;
import com.tencent.tencentmap.mapsdk.maps.model.Polyline;
import com.tencent.tencentmap.mapsdk.maps.model.PolylineOptions;
import com.tencent.tencentmap.mapsdk.maps.model.TencentMapGestureListener;
import org.locationtech.jts.geom.Coordinate;
import org.locationtech.jts.geom.Geometry;
@ -130,6 +131,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Consumer;
import java.util.function.Predicate;
/**
@ -183,6 +185,8 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
private TencentMarkerUtils tencentMarkerUtils;
private ImageView imgAutoMatchRoad; // 自动匹配道路
private ImageView ivNaviDistance; // 按距离自动导航
private List<Marker> drawLineMarkerList = new ArrayList<>();
private Polyline drawLinePolyline;
public static TreasureFragment newInstance(Bundle bundle) {
TreasureFragment fragment = new TreasureFragment();
@ -387,73 +391,6 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
}
});
// 内部测试功能
ImageView imgViewSettingHook = findViewById(R.id.image_view);
imgViewSettingHook.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
View layer = findViewById(R.id.layer_visiable_setting);
if (layer.isShown()) {
return;
}
settingHookClickCount++;
if(lastClickTime > 0){
long secondClickTime = System.currentTimeMillis();//距离上次开机时间
long dtime = secondClickTime - lastClickTime;
if(dtime <800){
if (settingHookClickCount>8) {
Toast.makeText(getContext(), "打开设置功能", Toast.LENGTH_SHORT).show();
layer.setVisibility(View.VISIBLE);
} else {
if (settingHookClickCount>3) {
Toast.makeText(getContext(), "再点击"+(9-settingHookClickCount)+"下打开设置功能", Toast.LENGTH_SHORT).show();
}
}
} else{
lastClickTime = 0;
settingHookClickCount = 1;
}
}
lastClickTime = System.currentTimeMillis();
}
});
// Spinner spnBaseLocation = findViewById(R.id.spn_main_location);
// Spinner spnRefrenceLocation = findViewById(R.id.spn_reference_location);
// ArrayAdapter arrayAdapter = new ArrayAdapter(getActivity(), android.R.layout.simple_spinner_dropdown_item, android.R.id.text1, new String[]{"腾讯", "GPS"});
// spnBaseLocation.setAdapter(arrayAdapter);
// spnRefrenceLocation.setAdapter(arrayAdapter);
// spnRefrenceLocation.setSelection(1);
// spnBaseLocation.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
// @Override
// public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
// if (i == 0) {
// LocationLifeCycle.getInstance().setMainLocationFrom(LocationLifeCycle.LOCATION_FROM.TENCENT);
// } else if (i==1) {
// LocationLifeCycle.getInstance().setMainLocationFrom(LocationLifeCycle.LOCATION_FROM.ORIGIN);
// }
// }
//
// @Override
// public void onNothingSelected(AdapterView<?> adapterView) {
//
// }
// });
//
// spnRefrenceLocation.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
// @Override
// public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
// if (i == 0) {
// LocationLifeCycle.getInstance().setReferenceLocationFrom(LocationLifeCycle.LOCATION_FROM.TENCENT);
// } else if (i==1) {
// LocationLifeCycle.getInstance().setReferenceLocationFrom(LocationLifeCycle.LOCATION_FROM.ORIGIN);
// }
// }
//
// @Override
// public void onNothingSelected(AdapterView<?> adapterView) {
//
// }
// });
}
/**
@ -1132,6 +1069,116 @@ public class TreasureFragment extends BaseFragment implements View.OnClickListen
tvTenantGaps.setText("信号强度:强");
}
}
} else if (data.what == Constant.EVENT_WHAT_CHANGE_SLIDING_STATE) { // 改变滑动窗口的状态
if (sliding_layout!=null) {
if (data.arg1 == View.GONE || data.arg1 == View.INVISIBLE) {
sliding_layout.setPanelHeight(0);
} else {
int[] deviceInfo = DensityUtil.getDeviceInfo(getActivity());
sliding_layout.setPanelHeight(deviceInfo[1] / 2);
}
sliding_layout.setPanelState((SlidingUpPanelLayout.PanelState) data.obj);
}
} else if (data.what == Constant.EVENT_WHAT_START_DRAW_LINE) { // 开始绘制参考线
// 界面显示绘制结束按钮
TextView drawFinish = findViewById(R.id.tv_draw_line_finish);
TextView drawCancel = findViewById(R.id.tv_draw_line_cancel);
drawFinish.setVisibility(View.VISIBLE);
drawCancel.setVisibility(View.VISIBLE);
drawFinish.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 检查当前线型的点位数据如果小于2个点无法完成
if (drawLinePolyline.getPoints()==null||drawLinePolyline.getPoints().size()<2) {
// 绘制的线不存在
ToastUtils.Message(getActivity(), "绘制的线不存在!");
return;
}
Message drawLineFinishMsg = Message.obtain();
drawLineFinishMsg.what = Constant.EVENT_WHAT_FINISH_DRAW_LINE;
drawLineFinishMsg.obj = drawLinePolyline.getPoints();
drawLineFinishMsg.arg1=1; // arg1为1代表存在绘制的辅助线为0代表用户点击取消不需要辅助线
EventBus.getDefault().post(drawLineFinishMsg);
drawFinish.setVisibility(View.GONE);
drawCancel.setVisibility(View.GONE);
tencentMap.setOnMapClickListener(null);
if (drawLineMarkerList!=null&&!drawLineMarkerList.isEmpty()) {
drawLineMarkerList.stream().forEach(new Consumer<Marker>() {
@Override
public void accept(Marker marker) {
marker.remove();
}
});
drawLineMarkerList.clear();
}
if (drawLinePolyline!=null) {
drawLinePolyline.remove();
}
}
});
drawCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Message drawLineFinishMsg = Message.obtain();
drawLineFinishMsg.what = Constant.EVENT_WHAT_FINISH_DRAW_LINE;
drawLineFinishMsg.arg1=0;// arg1为1代表存在绘制的辅助线为0代表用户点击取消不需要辅助线
EventBus.getDefault().post(drawLineFinishMsg);
drawFinish.setVisibility(View.GONE);
drawCancel.setVisibility(View.GONE);
tencentMap.setOnMapClickListener(null);
if (drawLineMarkerList!=null&&!drawLineMarkerList.isEmpty()) {
drawLineMarkerList.stream().forEach(new Consumer<Marker>() {
@Override
public void accept(Marker marker) {
marker.remove();
}
});
drawLineMarkerList.clear();
}
if (drawLinePolyline!=null) {
drawLinePolyline.remove();
}
}
});
if (drawLineMarkerList!=null&&!drawLineMarkerList.isEmpty()) {
drawLineMarkerList.stream().forEach(new Consumer<Marker>() {
@Override
public void accept(Marker marker) {
marker.remove();
}
});
drawLineMarkerList.clear();
}
if (drawLinePolyline!=null) {
drawLinePolyline.remove();
}
PolylineOptions drawLineOptions = new PolylineOptions() // 用户绘制参考线的线数据
// 折线设置圆形线头
.lineCap(true)
// 折线的颜色为绿色
.color(0xff00ff00)
.borderColor(0xff00ff00)
// 折线宽度为25像素
.width(12)
// 描边颜色的宽度线宽还是 25 像素不过填充的部分宽度为 `width` - 2 * `borderWidth`
.borderWidth(5);
drawLinePolyline = tencentMap.addPolyline(drawLineOptions);
if (tencentMap!=null) {
tencentMap.setOnMapClickListener(new TencentMap.OnMapClickListener() {
@Override
public void onMapClick(LatLng latLng) {
drawLinePolyline.appendPoint(latLng);
drawLineMarkerList.add(tencentMap.addMarker(new MarkerOptions(latLng).icon(
BitmapDescriptorFactory.fromResource(R.drawable.green_point)
)));
}
});
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -38,6 +38,20 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_draw_line_road"
style="@style/user_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:gravity="center"
app:layout_constraintLeft_toRightOf="@id/tv_message"
app:layout_constraintTop_toTopOf="@id/tv_message"
app:layout_constraintBottom_toBottomOf="@id/tv_message"
android:text="绘制辅助线"
android:textColor="@color/white"
android:textSize="15sp" />
<LinearLayout
android:id="@+id/ll_name"
android:layout_width="match_parent"

View File

@ -43,6 +43,20 @@
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_draw_line_poi_video"
style="@style/user_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:gravity="center"
app:layout_constraintLeft_toRightOf="@id/tv_message"
app:layout_constraintTop_toTopOf="@id/tv_message"
app:layout_constraintBottom_toBottomOf="@id/tv_message"
android:text="绘制辅助线"
android:textColor="@color/white"
android:textSize="15sp" />
<LinearLayout
android:id="@+id/ll_name"
android:layout_width="match_parent"

View File

@ -174,33 +174,36 @@
app:layout_constraintLeft_toLeftOf="@id/iv_refrish"
app:layout_constraintTop_toBottomOf="@id/iv_refrish" />
<ImageView
android:id="@+id/image_view"
android:layout_width="60dp"
android:layout_height="50dp"
android:background="@android:color/transparent"
app:layout_constraintHeight_default="percent"
app:layout_constraintHeight_percent="0.4"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.4" />
<LinearLayout
android:id="@+id/layer_visiable_setting"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintRight_toRightOf="@id/cb_map_type"
app:layout_constraintBottom_toTopOf="@id/cb_map_type">
<!-- <Spinner-->
<!-- android:id="@+id/spn_main_location"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"></Spinner>-->
<!-- <Spinner-->
<!-- android:id="@+id/spn_reference_location"-->
<!-- android:layout_width="wrap_content"-->
<!-- android:layout_height="wrap_content"></Spinner>-->
android:layout_margin="@dimen/default_widget_padding"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
<TextView
android:id="@+id/tv_draw_line_finish"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/selector_default_btn_round_corner_bg"
android:textColor="@color/selector_default_btn_text_color"
android:textSize="24sp"
android:visibility="gone"
android:padding="@dimen/default_widget_padding"
android:text="完成"></TextView>
<TextView
android:id="@+id/tv_draw_line_cancel"
android:layout_marginTop="@dimen/default_widget_padding"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/selector_default_btn_round_corner_bg"
android:textColor="@color/selector_default_btn_text_color"
android:textSize="24sp"
android:visibility="gone"
android:padding="@dimen/default_widget_padding"
android:text="取消"></TextView>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>