Commit 2b65e6f7 authored by p x's avatar p x
Browse files

最小矩形

parent 9d8a25ea
......@@ -42,12 +42,12 @@
<!-- 去UNITY广告-->
<meta-data
android:name="unity.splash-mode"
android:value="0" />
<meta-data
android:name="unity.splash-enable"
android:value="False" />
<!-- <meta-data-->
<!-- android:name="unity.splash-mode"-->
<!-- android:value="0" />-->
<!-- <meta-data-->
<!-- android:name="unity.splash-enable"-->
<!-- android:value="False" />-->
<uses-library
android:name="org.apache.http.legacy"
......
......@@ -162,12 +162,14 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
}
override fun getToData() {
//开启websocket
getTarget()
// getV2x()
//开启2个HTTP sse
// getCarVehicle()
// getAvpStatus()
if (!mainVm.isMock) {
//开启websocket
getTarget()
getV2x()
//开启2个HTTP sse
getCarVehicle()
getAvpStatus()
}
//获取车位占用情况
// getSpaceInfo()
}
......@@ -237,6 +239,8 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
mapOpt.showParkLight(businessType, businessStatus, avpStatu.space)
//判断在泊车状态下的倒挡绘制倒车路线,改变镜头视角,,判断车是否到达停车点
mapOpt.drawReversePark(businessType, businessStatus, gearType, avpStatu.space)
//重置变量
resetVariable(businessStatus)
//根据AVP任务状态判停车特效是否关闭
// mapOpt.showEffectAvpStatu(businessType, businessStatus)
}
......@@ -283,7 +287,7 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
/***重置变量**/
private fun resetVariable(businessStatus: String) {
if (businessStatus == AvpContants.TRANSPORT_COMPLETED) {
if (businessStatus == AvpContants.TRANSPORT_COMPLETED || businessStatus == AvpContants.TRANSPORT_CANCELED) {
mainVm.isGetVehDetail = false
// mapOpt.smallMapLine = false
mapOpt.sliceIndex = 0
......
......@@ -102,7 +102,7 @@ class MainVm @Inject constructor(
lateinit var mockVM: MockVM
//是否需要模拟
var isMock = false
var isMock = true
//车辆位姿数据
// var carVehicle = MutableLiveData<CarVehicle>()
......@@ -247,7 +247,7 @@ class MainVm @Inject constructor(
fun subVehicle(): StateFlow<CarVehicle> {
if (isMock) {
// mockVM.subVehicle(carVehicle)
mockVM.onVehicleMock(carVehicle)
mockVM.onVehicleMockPark(carVehicle)
} else {
var url = "${MyContants.HOST}/api/avpweb/hmi/monitor/v1/monitorDrivenStatus"
carCb.url = url
......
......@@ -3,6 +3,7 @@ package com.sd.cavphmi.viewmodels
import android.content.Context
import android.graphics.BitmapFactory
import android.graphics.Point
import android.graphics.Rect
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.minedata.minenavi.map.Marker
......@@ -79,7 +80,8 @@ class MapOpt @Inject constructor(
//画全局路径
fun drawAllLines(drivenDecision: DrivenDecision, businessStatus: String) {
if (businessStatus == AvpContants.TRANSPORT_COMPLETED || businessStatus == AvpContants.TRANSPORT_CANCELED
|| businessStatus == AvpContants.PARK_COMPLETED) {
|| businessStatus == AvpContants.PARK_COMPLETED
) {
//清除全局路径
HighMapApi.setCarNavPath(emptyList())
return
......@@ -127,7 +129,7 @@ class MapOpt @Inject constructor(
if (mMineMap != null && car.vehiclePos != null) {
if (mSmallMapCar == null) {
var point =
LatLng(car.vehiclePos?.get(1)?:0.0, car.vehiclePos?.get(0)?:0.0)
LatLng(car.vehiclePos?.get(1) ?: 0.0, car.vehiclePos?.get(0) ?: 0.0)
mSmallMapCar = MyLocationStyle("res/icons/carIconInSmallMap.png", true)
mSmallMapCar?.myLocationType(MyLocationStyle.LOCATION_TYPE_EXTERNAL)
val scaleFactor = -
......@@ -149,7 +151,8 @@ class MapOpt @Inject constructor(
if (carVehicle.vehiclePos == null)
return
synchronized(NativeEnv.SyncObject) {
var ndsLatLng = LatLng(carVehicle.vehiclePos?.get(1)?:0.0, carVehicle.vehiclePos?.get(0)?:0.0)
var ndsLatLng =
LatLng(carVehicle.vehiclePos?.get(1) ?: 0.0, carVehicle.vehiclePos?.get(0) ?: 0.0)
var tHead = carVehicle.vehiclePos!!.get(2).toFloat()
//刷新小地图自车位置
if (mSmallMapCar != null) {
......@@ -232,7 +235,21 @@ class MapOpt @Inject constructor(
} else {
deleteSmapLine()
}
// }
}
/**车到终点生成一个矩形*/
// fun drawEndArea(fromLng: Double, fromLat: Double, toLng: Double, toLat: Double) {
fun drawEndArea(lat1: Double, lon1: Double, lat2: Double, lon2: Double) {
var minLat = Math.min(lat1, lat2)
var maxLat = Math.max(lat1, lat2)
var minLon = minOf(lon1, lon2)
var maxLon = maxOf(lon1, lon2)
var rect = Rect(
minLat.toInt(), maxLat.toInt(),
minLon.toInt(), maxLon.toInt()
)
mMineMap?.fitWorldArea(rect)
}
......
......@@ -3,6 +3,7 @@ package com.sd.cavphmi.viewmodels
import android.content.Context
import android.graphics.BitmapFactory
import android.graphics.Point
import android.graphics.Rect
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
......@@ -41,8 +42,11 @@ import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.locationtech.jts.geom.Coordinate
import org.locationtech.jts.geom.Polygon
import javax.inject.Inject
import kotlin.math.absoluteValue
import kotlin.math.max
import kotlin.math.min
@HiltViewModel
......@@ -67,11 +71,11 @@ class MockVM @Inject constructor(
}
/******
* 模拟车辆位姿
* 模拟车辆位姿 泊车
* @param binding 里的航向角
* @param binding 里的速度
* **/
fun onVehicleMock(
fun onVehicleMockPark(
carVehicle: MutableStateFlow<CarVehicle>
) {
// HighMapApi.setCameraAngle(30f)
......@@ -88,6 +92,8 @@ class MockVM @Inject constructor(
smallLineMock(mRoutes)
//画终点
addEndMarker(LatLng(39.809039362307594, 116.50254394816011))
//用矩形框柱
drawEndArea(39.81014469509955,116.50238005214746,39.809039362307594, 116.50254394816011)
//画出全局路径
var lines = mRoutes.rs.map {
AllLine(it[1], it[0])
......@@ -164,7 +170,8 @@ class MockVM @Inject constructor(
//改变镜头角度
HighMapApi.setCameraAngle(60f)
HighMapApi.setCameraDistance(30f)
//前进
CarPanelBean.instance.speed.set(5)//减速
//从停车点再前进一点
var forword = parkPath.result.routes.find { it.gear == 3 }
forword?.polyline?.forEach { poly ->
cCar = CarVehicle().apply {
......@@ -242,6 +249,27 @@ class MockVM @Inject constructor(
}
fun drawEndArea(lat1: Double, lon1: Double, lat2: Double, lon2: Double) {
var minLat = Math.min(lat1, lat2).times(100000)
var maxLat = Math.max(lat1, lat2).times(100000)
var minLon = minOf(lon1, lon2).times(100000)
var maxLon = maxOf(lon1, lon2).times(100000)
var rect = Rect(
minLat.toInt(), maxLat.toInt(),
minLon.toInt(), maxLon.toInt()
)
mMineMap?.fitWorldArea(rect)
}
//召车
fun onVehicleMockCall(
carVehicle: MutableStateFlow<CarVehicle>
){
}
/***跑服务器的模拟数据**/
fun subVehicle(
carLiveData: MutableStateFlow<CarVehicle>
......
......@@ -61,13 +61,14 @@
android:layout_height="25dp"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:visibility="gone">
android:visibility="visible">
<TextView
android:id="@+id/bt_vehicle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@color/text_blue"
android:gravity="center"
android:text="车辆位姿"
android:textColor="@color/white" />
......@@ -182,7 +183,7 @@
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginEnd="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_15"
android:layout_marginBottom="@dimen/dp_35"
android:background="@drawable/rect_white_small_map_4"
android:padding="3dp">
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment