Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
p x
SuZhouAvp
Commits
9d19c112
Commit
9d19c112
authored
Sep 09, 2025
by
p x
Browse files
加入高精地图API
parent
666b069e
Changes
12
Hide whitespace changes
Inline
Side-by-side
app/src/main/java/com/sd/cavphmi/bean/PerTarget.kt
View file @
9d19c112
package
com.sd.cavphmi.bean
/**
* 感知目标物
* 感知目标物
实体
****/
data class
PerTarget
(
val
collectTime
:
Int
,
...
...
app/src/main/java/com/sd/cavphmi/highmap/AlertPath.kt
0 → 100644
View file @
9d19c112
package
com.sd.cavphmi.highmap
/**
* Alert path
* 传入点的坐标数组绘制路面状况颜色2=(路径里的红色、施工区域红色、人行道红色) 3=绿色(绿波) 4=感知车前的红色)
*/
data class
AlertPath
(
val
alertLins
:
List
<
AlertLin
>,
val
alertType
:
Int
)
class
AlertLin
{
// val evel: Int,
var
lat
:
Double
=
0.0
var
lon
:
Double
=
0.0
}
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/highmap/BottomCircle.kt
0 → 100644
View file @
9d19c112
package
com.sd.cavphmi.highmap
/**
* 开启(关闭)绘制主车底盘下的光圈
*/
data class
BottomCircle
(
val
ison
:
Boolean
)
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/highmap/CarNavPath.kt
0 → 100644
View file @
9d19c112
package
com.sd.cavphmi.highmap
/**
*全局路径绘制(蓝色)
*/
data class
CarNavPath
(
val
lines
:
List
<
AllLine
>
)
data class
AllLine
(
// val evel: Int,
val
lat
:
Double
,
val
lon
:
Double
)
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/highmap/CarPos.kt
0 → 100644
View file @
9d19c112
package
com.sd.cavphmi.highmap
/**
* 根据外界传入的坐标,航向角,速度使主车移动
* {
* "lat": 116.50272672296624, //纬度
* "lon": 116.49886019, //经度
* "evel": 20.80189, //高度
* "heading": 0, //汽车姿态方向角度
* }
*/
class
CarPos
{
var
evel
=
20.80189
var
heading
=
0.0
var
lat
=
0.0
var
lon
=
0.0
}
app/src/main/java/com/sd/cavphmi/highmap/HighMapApi.kt
0 → 100644
View file @
9d19c112
package
com.sd.cavphmi.highmap
import
com.google.gson.Gson
import
com.unity3d.player.UnityPlayer
/**
* 高精地图Api
*
* 在EarlyWarnVM.kt里setAssEvent函数里用到了
*/
object
HighMapApi
{
private
var
gson
=
Gson
()
private
const
val
MODELNAME
=
"MsgBridge"
/**
* 给unity读取3d tile json配置
*/
fun
setTileInit
(
tileJsonBean
:
TileJsonBean
)
{
UnityPlayer
.
UnitySendMessage
(
MODELNAME
,
"SetTileInit"
,
gson
.
toJson
(
tileJsonBean
))
}
/**
* 根据外界传入的坐标,航向角,速度使主车移动
* @param heading 航向角
* @param evel 高程
*/
fun
setCarPosition
(
evel
:
Float
,
heading
:
Double
,
lat
:
Double
,
lon
:
Double
)
{
val
carPos
=
CarPos
().
apply
{
this
.
evel
=
evel
.
toDouble
()
this
.
heading
=
heading
this
.
lat
=
lat
this
.
lon
=
lon
}
UnityPlayer
.
UnitySendMessage
(
MODELNAME
,
"SetCarPosition"
,
gson
.
toJson
(
carPos
))
}
/**
* 开启(关闭)绘制主车底盘下的光圈
*/
fun
setCarBottomCircle
(
ison
:
Boolean
)
{
var
bottomCircle
=
BottomCircle
(
ison
)
UnityPlayer
.
UnitySendMessage
(
MODELNAME
,
"SetCarBottomCircle"
,
gson
.
toJson
(
bottomCircle
))
}
/**
* 开启(关闭)主车前方的雷达6个方向
*/
fun
setCarRadarDirection
(
dirent
:
Int
)
{
var
radarDirection
=
RadarDirection
(
dirent
)
UnityPlayer
.
UnitySendMessage
(
MODELNAME
,
"SetCarRadarDirection"
,
gson
.
toJson
(
radarDirection
))
}
/**
* 车辆行驶全局路径绘制 - 蓝色渐变引导线
* @param lines 全局路径
*/
fun
setCarNavPath
(
lines
:
List
<
AllLine
>)
{
var
carNavPath
=
CarNavPath
(
lines
)
UnityPlayer
.
UnitySendMessage
(
MODELNAME
,
"SetCarNavPath"
,
gson
.
toJson
(
carNavPath
))
}
/**
* 传入点的坐标数组绘制路面状况颜色2=(路径里的红色、施工区域红色、人行道红色) 3=绿色(绿波) 4=感知车前的红色)
* @param alertLins 危险路径
* @param alertType 危险类型
*/
fun
setAlertPath
(
alertLins
:
List
<
AlertLin
>,
alertType
:
Int
)
{
var
alertPath
=
AlertPath
(
alertLins
,
alertType
)
UnityPlayer
.
UnitySendMessage
(
MODELNAME
,
"SetAlertPath"
,
gson
.
toJson
(
alertPath
))
}
/**
* 绘制感知物
* @param ptcList
*/
fun
setPtcData
(
ptcList
:
List
<
UnityPtc
>)
{
var
ptcData
=
PtcData
(
ptcList
)
UnityPlayer
.
UnitySendMessage
(
MODELNAME
,
"SetPtcData"
,
gson
.
toJson
(
ptcData
))
}
/**
* 清除所有感知物
*/
fun
clearPtcData
()
{
UnityPlayer
.
UnitySendMessage
(
MODELNAME
,
"ClearAllPtcData"
,
""
)
}
}
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/highmap/PtcData.kt
0 → 100644
View file @
9d19c112
package
com.sd.cavphmi.highmap
/**
* 感知物数据
*
* {
* ptcList: //感知物数组
* [
* {
* ptcid:xxx,//感知物id
* "lat": 43.826145, //纬度
* "lon": 125.12990, //经度
* "pType":1 //感知物类型 1=车 2=人
* "heading": 125.12990, //航向角
* “isRed”:false //是否变红
* isFlash:fasle //是否闪烁
* aniTime:1(单位秒) //此字段具有高优先级,以第一帧接收为准开始计时,控制闪烁和变红在X秒后消失,如果传0已上面的bool值为准。
* },
*
* }
*/
data class
PtcData
(
val
ptcList
:
List
<
UnityPtc
>
)
class
UnityPtc
{
var
aniTime
=
1
var
pType
=
0
var
heading
=
0.0
var
isFlash
=
false
var
isRed
=
false
var
lat
:
Double
=
0.0
var
lon
:
Double
=
0.0
var
ptcid
:
String
=
""
}
app/src/main/java/com/sd/cavphmi/highmap/RadarDirection.kt
0 → 100644
View file @
9d19c112
package
com.sd.cavphmi.highmap
/**
* 车前雷达
* {dirent:1} 0=关闭 1=左前 2=正前 3=右前 4=右后 5=正后 6=左后
*/
data class
RadarDirection
(
val
dirent
:
Int
)
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/highmap/TileJsonBean.kt
0 → 100644
View file @
9d19c112
package
com.sd.cavphmi.highmap
import
com.sd.cavphmi.utils.MyContants
/**
* 给unity 初始化json
*
* @property host
* @property tiles3d
* @constructor Create empty Tile json bean
*/
class
TileJsonBean
{
var
host
:
String
=
MyContants
.
HOST
var
tiles3d
=
listOf
(
"/gis_data/3dtiles/road/CurbStrip/tileset.json"
,
"/gis_data/3dtiles/road/LanePolygon/tileset.json"
,
"/gis_data/3dtiles/road/RoadSection/tileset.json"
,
"/gis_data/3dtiles/road/SafetyIsland/tileset.json"
,
"/gis_data/3dtiles/road/SepStrip/tileset.json"
,
"/gis_data/3dtiles/road/SideWalk/tileset.json"
,
"/gis_data/3dtiles/road/TraMarkA/tileset.json"
,
"/gis_data/3dtiles/road/TraMarkL/tileset.json"
,
"/gis_data/3dtiles/road/TraMarkP/tileset.json"
,
"/gis_data/3dtiles/roadequip/FieldFacility/tileset.json"
,
"/gis_data/3dtiles/roadequip/PlatForm/tileset.json"
,
"/gis_data/3dtiles/roadequip/SafetyRail/tileset.json"
,
"/gis_data/3dtiles/roadequip/SignStrct/tileset.json"
,
"/gis_data/3dtiles/roadequip/StreetLight/tileset.json"
,
"/gis_data/3dtiles/roadequip/TrafficLight/tileset.json"
,
"/gis_data/3dtiles/roadequip/TrafficSign/tileset.json"
,
"/gis_data/3dtiles/roadequip/VideoCamera/tileset.json"
,
"/gis_data/3dtiles/roadequip/baoganji/tileset.json"
,
"/gis_data/3dtiles/roadequip/buguangdeng/tileset.json"
,
"/gis_data/3dtiles/roadequip/chongdianzhuang/tileset.json"
,
"/gis_data/3dtiles/roadequip/jiaohuanji/tileset.json"
,
"/gis_data/3dtiles/roadequip/xinhaoji/tileset.json"
,
"/gis_data/3dtiles/roadequip/yidongronghe/tileset.json"
,
"/gis_data/3dtiles/buildings/tileset.json"
,
"/gis_data/3dtiles/ground/tileset.json"
,
"/gis_data/3dtiles/vegetation/Tree/tileset.json"
)
}
\ No newline at end of file
app/src/main/java/com/sd/cavphmi/ui/LoginActivity.kt
View file @
9d19c112
...
...
@@ -50,7 +50,7 @@ class LoginActivity : AppCompatActivity() {
binding
.
btSpaceinfo
.
setOnClickListener
{
mainVm
.
getSpaceInfo
()
}
// HTTP获取AVp状态信息 以后就用socket订阅了
// HTTP获取AVp状态信息 以后就用socket订阅了
,获取找、泊车状态,拿到全局路径lines,和局部(避障)路径xxx
binding
.
btAvpstatu
.
setOnClickListener
{
mainVm
.
getAvpStatus
()
}
...
...
app/src/main/java/com/sd/cavphmi/utils/MyContants.kt
View file @
9d19c112
...
...
@@ -22,7 +22,7 @@ object MyContants {
var
WSHOST
=
"wss://itg-dev.cu-sc.com:19443/WSPLUSV5/socket?token=${WSTOKEN}&vehicleId=${VEHICLEID}&"
// var PORT = if (IS_DEBUG) "123" else "34534"
/***感知目标物 &intersectionCode***/
/***感知目标物 &intersectionCode
=17 停车场 不传就是整个园区
***/
var
WS_FEEL_TARGET
=
"${WSHOST}msgType=1&intersectionCode=17"
/***网联车辆位姿 &vehicleId=***/
...
...
app/src/main/java/com/sd/cavphmi/viewmodels/MainVm.kt
View file @
9d19c112
...
...
@@ -125,7 +125,7 @@ class MainVm @Inject constructor(
}
//获取车辆详情 传{}就行,正常应该是传场地ID,但是亦庄这个和太和桥车是一样的
//获取车辆详情 传{}就行,正常应该是传场地ID,但是亦庄这个和太和桥车是一样的
,用于拿到车内视频
fun
getVehDetail
(
id
:
String
=
""
):
LiveData
<
VehDetailBean
>
{
viewModelScope
.
launch
{
var
result
=
avpDataRepo
.
getVehDetail
(
id
)
...
...
@@ -142,7 +142,8 @@ class MainVm @Inject constructor(
}
//HTTP获取车位占用情况
/* HTTP获取车位占用情况
通过车位号传给四维高精地图*/
fun
getSpaceInfo
():
LiveData
<
SpaceInfoBean
>
{
viewModelScope
.
launch
{
var
result
=
avpDataRepo
.
getSpaceInfo
()
...
...
@@ -182,6 +183,7 @@ class MainVm @Inject constructor(
/**
* 联网车辆位姿数据
* 传入vehicleId 和url拼接代表某辆车的预警
* 用来控制主车移动
*/
fun
subVehicle
():
LiveData
<
CarVehicle
>
{
if
(
isMock
)
{
...
...
@@ -235,7 +237,8 @@ class MainVm @Inject constructor(
/**
* V2X预警开始
* 传入vehicleId 和url拼接代表某辆车的预警
* **/
* 某个预警id要和感知物的ptcid对上
*/
fun
subStartV2x
():
LiveData
<
V2xStartBean
>
{
if
(
isMock
)
{
mockVM
.
onV2xMock
(
v2xStartBean
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment