Commit 6c616198 authored by p x's avatar p x
Browse files

调整AVP加载方式

parent e0a57a35
{"businessStatus":"DRIVING","spaceName":null,"vehiclePos":[116.502439,39.808918,327.76611328125],"routing":[],"progress":null} {"businessStatus":"DRIVING","spaceName":null,"vehiclePos":[116.502439,39.808918,null],"routing":[],"progress":null}
{"businessStatus":"DRIVING","spaceName":null,"vehiclePos":[116.502435,39.808923,327.777099609375],"routing":[],"progress":null} {"businessStatus":"DRIVING","spaceName":null,"vehiclePos":[116.502435,39.808923,327.777099609375],"routing":[],"progress":null}
{"businessStatus":"DRIVING","spaceName":null,"vehiclePos":[116.502432,39.808927,327.843017578125],"routing":[],"progress":null} {"businessStatus":"DRIVING","spaceName":null,"vehiclePos":[116.502432,39.808927,327.843017578125],"routing":[],"progress":null}
{"businessStatus":"DRIVING","spaceName":null,"vehiclePos":[116.502428,39.808932,327.930908203125],"routing":[],"progress":null} {"businessStatus":"DRIVING","spaceName":null,"vehiclePos":[116.502428,39.808932,327.930908203125],"routing":[],"progress":null}
......
package com.sd.cavphmi.highmap package com.sd.cavphmi.highmap
import com.sd.cavphmi.utils.MyContants
/** /**
* 给unity 初始化json * 给unity 初始化json
...@@ -11,63 +9,67 @@ import com.sd.cavphmi.utils.MyContants ...@@ -11,63 +9,67 @@ import com.sd.cavphmi.utils.MyContants
* @constructor Create empty Tile json bean * @constructor Create empty Tile json bean
*/ */
class TileJsonBean { class TileJsonBean {
var host: String = MyContants.HOST_MAP /* var host: String = MyContants.HOST_MAP
var tiles3d = listOf( var tiles3d = listOf(
// "/gis_data/3dtiles/road/CurbStrip/tileset.json", // "/gis_data/3dtiles/road/CurbStrip/tileset.json",
"/gis_data/3dtiles/road/LanePolygon/tileset.json", "/gis_data/3dtiles/road/LanePolygon/tileset.json",
"/gis_data/3dtiles/road/RoadSection/tileset.json", "/gis_data/3dtiles/road/RoadSection/tileset.json",
"/gis_data/3dtiles/road/SafetyIsland/tileset.json", "/gis_data/3dtiles/road/SafetyIsland/tileset.json",
"/gis_data/3dtiles/road/SepStrip/tileset.json", "/gis_data/3dtiles/road/SepStrip/tileset.json",
"/gis_data/3dtiles/road/SideWalk/tileset.json", "/gis_data/3dtiles/road/SideWalk/tileset.json",
"/gis_data/3dtiles/road/TraMarkA/tileset.json", "/gis_data/3dtiles/road/TraMarkA/tileset.json",
"/gis_data/3dtiles/road/TraMarkL/tileset.json", "/gis_data/3dtiles/road/TraMarkL/tileset.json",
"/gis_data/3dtiles/road/TraMarkP/tileset.json", "/gis_data/3dtiles/road/TraMarkP/tileset.json",
// "/gis_data/3dtiles/roadequip/FieldFacility/tileset.json", // "/gis_data/3dtiles/roadequip/FieldFacility/tileset.json",
// "/gis_data/3dtiles/roadequip/PlatForm/tileset.json", // "/gis_data/3dtiles/roadequip/PlatForm/tileset.json",
// "/gis_data/3dtiles/roadequip/SafetyRail/tileset.json", // "/gis_data/3dtiles/roadequip/SafetyRail/tileset.json",
// "/gis_data/3dtiles/roadequip/SignStrct/tileset.json",//监控杆子和路标杆子 // "/gis_data/3dtiles/roadequip/SignStrct/tileset.json",//监控杆子和路标杆子
// "/gis_data/3dtiles/roadequip/StreetLight/tileset.json",//路灯 // "/gis_data/3dtiles/roadequip/StreetLight/tileset.json",//路灯
// "/gis_data/3dtiles/roadequip/TrafficLight/tileset.json", // "/gis_data/3dtiles/roadequip/TrafficLight/tileset.json",
// "/gis_data/3dtiles/roadequip/TrafficSign/tileset.json",//监控探头和路标牌子 // "/gis_data/3dtiles/roadequip/TrafficSign/tileset.json",//监控探头和路标牌子
// "/gis_data/3dtiles/roadequip/VideoCamera/tileset.json", // "/gis_data/3dtiles/roadequip/VideoCamera/tileset.json",
// "/gis_data/3dtiles/roadequip/xinhaodeng/tileset.json", // "/gis_data/3dtiles/roadequip/xinhaodeng/tileset.json",
// "/gis_data/3dtiles/roadequip/baoganji/tileset.json", // "/gis_data/3dtiles/roadequip/baoganji/tileset.json",
// "/gis_data/3dtiles/roadequip/buguangdeng/tileset.json", // "/gis_data/3dtiles/roadequip/buguangdeng/tileset.json",
"/gis_data/3dtiles/roadequip/chongdianzhuang/tileset.json", "/gis_data/3dtiles/roadequip/chongdianzhuang/tileset.json",
// "/gis_data/3dtiles/roadequip/jiaohuanji/tileset.json", // "/gis_data/3dtiles/roadequip/jiaohuanji/tileset.json",
// "/gis_data/3dtiles/roadequip/xinhaoji/tileset.json", // "/gis_data/3dtiles/roadequip/xinhaoji/tileset.json",
"/gis_data/3dtiles/roadequip/yidongronghe/tileset.json", "/gis_data/3dtiles/roadequip/yidongronghe/tileset.json",
"/gis_data/3dtiles/buildings/tileset.json", "/gis_data/3dtiles/buildings/tileset.json",
"/gis_data/3dtiles/ground/tileset.json", "/gis_data/3dtiles/ground/tileset.json",
// "/gis_data/3dtiles/vegetation/Tree/tileset.json"//树 // "/gis_data/3dtiles/vegetation/Tree/tileset.json"//树
) )*/
//我本地的 //我本地的
// var host: String = "http://192.168.60.73" var host: String = "http://192.168.60.73"
// var tiles3d = listOf("/data/3dtiles/tileset.json") var tiles3d = listOf(
"/data/avp/01road/tileset.json",
"/data/avp/02shebei/tileset.json",
"/data/avp/04jianzhu/tileset.json"
)
//方本地的 //方本地的
/* var host = "http://192.168.60.164:5003" /* var host = "http://192.168.60.164:5003"
var host = "http://192.168.60.73:5003" var host = "http://192.168.60.73:5003"
var tiles3d = listOf("/data/3dtiles/LanePolygon-o/tileset.json", var tiles3d = listOf("/data/3dtiles/LanePolygon-o/tileset.json",
// "/data/3dtiles/RoadSection/tileset.json", // "/data/3dtiles/RoadSection/tileset.json",
// "/data/3dtiles/SafetyIsland/tileset.json", // "/data/3dtiles/SafetyIsland/tileset.json",
// "/data/3dtiles/SepStrip/tileset.json", // "/data/3dtiles/SepStrip/tileset.json",
// "/data/3dtiles/SideWalk/tileset.json", // "/data/3dtiles/SideWalk/tileset.json",
// "/data/3dtiles/TraMarkA/tileset.json", // "/data/3dtiles/TraMarkA/tileset.json",
"/data/3dtiles/TraMarkL-o/tileset.json", "/data/3dtiles/TraMarkL-o/tileset.json",
// "/data/3dtiles/TraMarkP/tileset.json", // "/data/3dtiles/TraMarkP/tileset.json",
// "/data/3dtiles/SignStrct/tileset.json", // "/data/3dtiles/SignStrct/tileset.json",
// "/data/3dtiles/TrafficLight/tileset.json", // "/data/3dtiles/TrafficLight/tileset.json",
// "/data/3dtiles/TrafficSign/tileset.json", // "/data/3dtiles/TrafficSign/tileset.json",
// //
// "/data/3dtiles/Yizhuang_Unicom_building/tileset.json", // "/data/3dtiles/Yizhuang_Unicom_building/tileset.json",
// "/data/3dtiles/Yizhuang_Unicom_Ground/tileset.json" // "/data/3dtiles/Yizhuang_Unicom_Ground/tileset.json"
)*/ )*/
//四维的 //四维的
/* var host = "http://gz.tasks.city/3dtiles" /* var host = "http://gz.tasks.city/3dtiles"
var tiles3d = listOf( var tiles3d = listOf(
// "/1/CurbStrip/tileset.json", // "/1/CurbStrip/tileset.json",
......
...@@ -226,13 +226,13 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() { ...@@ -226,13 +226,13 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
//获取档位 //获取档位
var gearType = avpStatu.vehicleContext.vehicleDynamic.gearType var gearType = avpStatu.vehicleContext.vehicleDynamic.gearType
//画全局路径 //画全局路径
mapOpt.drawAllLines(avpStatu.drivenDecision,businessStatus) mapOpt.drawAllLines(avpStatu.drivenDecision, businessStatus)
//生成小地图路线 //生成小地图路线
mapOpt.takeSmallMapLine(avpStatu.drivenDecision,businessStatus) mapOpt.takeSmallMapLine(avpStatu.drivenDecision, businessStatus)
//画终点 //画终点
mapOpt.addEndMarker(avpStatu.drivenDecision.endPoint,businessStatus) mapOpt.addEndMarker(avpStatu.drivenDecision.endPoint, businessStatus)
//是否显示车位流光效果 //是否显示车位流光效果
mapOpt.showParkLight(businessType, businessStatus,avpStatu.space) mapOpt.showParkLight(businessType, businessStatus, avpStatu.space)
//判断在泊车状态下的倒挡绘制倒车路线,改变镜头视角,,判断车是否到达停车点 //判断在泊车状态下的倒挡绘制倒车路线,改变镜头视角,,判断车是否到达停车点
mapOpt.drawReversePark(businessType, businessStatus, gearType, avpStatu.space) mapOpt.drawReversePark(businessType, businessStatus, gearType, avpStatu.space)
//根据AVP任务状态判停车特效是否关闭 //根据AVP任务状态判停车特效是否关闭
...@@ -304,26 +304,30 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() { ...@@ -304,26 +304,30 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
return return
if (car.vehiclePos == null || car.vehiclePos.count() < 3) if (car.vehiclePos == null || car.vehiclePos.count() < 3)
return return
try { // try {
var tHead = car.vehiclePos.get(2) if (car.vehiclePos.getOrNull(2) == null) {
//画小地图小车
mapOpt.drawSmallCar(car)
//刷新右下角小车位置
mapOpt.showNavingCarPosition(car)
//刷新右下角小地图路径
mapOpt.upSmallMapLine(car)
// println("----car.heading ${car.heading}")
//刷新主车位置
HighMapApi.setCarPosition(
car.vehiclePos!!.get(2),
car.vehiclePos.get(1),
car.vehiclePos.get(0),
20.80189
// car.elevation
)
} catch (e: NullPointerException) {
//隐藏小车 //隐藏小车
return
} }
//画小地图小车
mapOpt.drawSmallCar(car)
//刷新右下角小车位置
mapOpt.showNavingCarPosition(car)
//刷新右下角小地图路径
mapOpt.upSmallMapLine(car)
// println("----car.heading ${car.heading}")
//刷新主车位置
HighMapApi.setCarPosition(
car.vehiclePos.get(2),
car.vehiclePos.get(1),
car.vehiclePos.get(0),
20.80189
// car.elevation
)
// } catch (e: NullPointerException) {
// //隐藏小车
// e.printStackTrace()
// }
// setCarCamera(1) // setCarCamera(1)
} }
...@@ -493,6 +497,11 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() { ...@@ -493,6 +497,11 @@ class MainActivity : BaseActivity<ActivityMainBinding, MyBaseViewModel>() {
} }
override fun onWindowFocusChanged(hasFocus: Boolean) {
super.onWindowFocusChanged(hasFocus)
mainVm.hasFocus.value = hasFocus
}
override fun dispatchKeyEvent(event: KeyEvent): Boolean { override fun dispatchKeyEvent(event: KeyEvent): Boolean {
if ((event.getKeyCode() == KeyEvent.KEYCODE_BACK) || event.getKeyCode() == KeyEvent.KEYCODE_HOME) { if ((event.getKeyCode() == KeyEvent.KEYCODE_BACK) || event.getKeyCode() == KeyEvent.KEYCODE_HOME) {
// var ft = supportFragmentManager.beginTransaction() // var ft = supportFragmentManager.beginTransaction()
......
...@@ -9,18 +9,12 @@ import android.widget.FrameLayout ...@@ -9,18 +9,12 @@ import android.widget.FrameLayout
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels import androidx.fragment.app.activityViewModels
import com.sd.cavphmi.highmap.HighMapApi import com.sd.cavphmi.highmap.HighMapApi
import com.sd.cavphmi.viewmodels.MainVm
import com.sd.cavphmi.viewmodels.UnityMapVm import com.sd.cavphmi.viewmodels.UnityMapVm
import com.unity3d.player.IUnityPlayerLifecycleEvents import com.unity3d.player.IUnityPlayerLifecycleEvents
import com.unity3d.player.UnityPlayer import com.unity3d.player.UnityPlayer
class UnityFragment : Fragment() {
/**
* A simple [Fragment] subclass.
* Use the [UnityFragment.newInstance] factory method to
* create an instance of this fragment.
*/
class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents {
// region Lifecycle Management - MUST BE FORWARDED TO UnityPlayer // region Lifecycle Management - MUST BE FORWARDED TO UnityPlayer
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
...@@ -44,19 +38,26 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents { ...@@ -44,19 +38,26 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents {
override fun onDestroy() { override fun onDestroy() {
super.onDestroy() super.onDestroy()
try { // try {
this.mUnityPlayer.destroy() mUnityPlayer.destroy()
} catch (e: Exception) { // } catch (e: Exception) {
// e.printStackTrace() //// e.printStackTrace()
} // }
} }
override fun onDestroyView() {
super.onDestroyView()
frameLayout.removeView(mUnityPlayer.rootView)
}
private lateinit var frameLayout: FrameLayout
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View? { ): View? {
// 创建一个简单的 FrameLayout 作为 Fragment 的根视图 // 创建一个简单的 FrameLayout 作为 Fragment 的根视图
val frameLayout = FrameLayout(requireContext()) frameLayout = FrameLayout(requireContext())
frameLayout.layoutParams = ViewGroup.LayoutParams(-1, -1) frameLayout.layoutParams = ViewGroup.LayoutParams(-1, -1)
// // 将 UnityPlayer 的视图添加到 FrameLayout 中 // // 将 UnityPlayer 的视图添加到 FrameLayout 中
mUnityPlayer.let { unityPlayer -> mUnityPlayer.let { unityPlayer ->
...@@ -69,15 +70,15 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents { ...@@ -69,15 +70,15 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents {
} }
override fun onUnityPlayerUnloaded() { // override fun onUnityPlayerUnloaded() {
Log.d("UnityFragment", "-----------------onUnityPlayerUnloaded") // Log.d("UnityFragment", "-----------------onUnityPlayerUnloaded")
// Unity 玩家未加载时调用 // // Unity 玩家未加载时调用
activity?.finish() // activity?.finish()
} // }
//
override fun onUnityPlayerQuitted() { // override fun onUnityPlayerQuitted() {
Log.d("UnityFragment", "-----------------onUnityPlayerQuitted") // Log.d("UnityFragment", "-----------------onUnityPlayerQuitted")
} // }
// UnityPlayer 实例 // UnityPlayer 实例
...@@ -86,29 +87,41 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents { ...@@ -86,29 +87,41 @@ class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents {
//UNITY map 控制类 //UNITY map 控制类
private val unityMapVm: UnityMapVm by activityViewModels() private val unityMapVm: UnityMapVm by activityViewModels()
//主页
private val mainVm: MainVm by activityViewModels()
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
mUnityPlayer = UnityPlayer(requireContext(), this) mUnityPlayer = UnityPlayer(requireContext())
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
// 视图创建完成后,可以在这里进行最终设置 // 视图创建完成后,可以在这里进行最终设置
mUnityPlayer.windowFocusChanged(true) // mUnityPlayer.windowFocusChanged(true)
// mUnityPlayer.requestFocus() // 视图创建完成后,可以在这里进行最终设置
mUnityPlayer.requestFocus()
mUnityPlayer.setFocusableInTouchMode(true)
//使用拼接服务器资源加载地图 //使用拼接服务器资源加载地图
unityMapVm.loadTileJson() unityMapVm.loadTileJson()
mUnityPlayer.postDelayed({ // mUnityPlayer.postDelayed({
// try { // try {
HighMapApi.setCarBottomCircle(true) HighMapApi.setCarBottomCircle(true)
// HighMapApi.setCameraAngle(90f) // HighMapApi.setCameraAngle(90f)
// HighMapApi.setCameraDistance(80f) // HighMapApi.setCameraDistance(80f)
HighMapApi.setCameraAngle(30f) HighMapApi.setCameraAngle(30f)
HighMapApi.setCameraDistance(6f) HighMapApi.setCameraDistance(6f)
// } catch (e: Exception) { // } catch (e: Exception) {
// } // }
}, 300) // }, 300)
setListener()
}
private fun setListener() {
mainVm.hasFocus.observe(viewLifecycleOwner) { hasFocus ->
mUnityPlayer.windowFocusChanged(hasFocus)
}
} }
......
...@@ -110,6 +110,7 @@ public class MyMapUtils { ...@@ -110,6 +110,7 @@ public class MyMapUtils {
return average % 360; return average % 360;
} }
//计算两点距离
public static double cauMyLocDistance(double fromLon, double fromLat, double toLon, double toLat) { public static double cauMyLocDistance(double fromLon, double fromLat, double toLon, double toLat) {
var results = new float[4]; var results = new float[4];
Location.distanceBetween( Location.distanceBetween(
......
...@@ -65,6 +65,8 @@ class MainVm @Inject constructor( ...@@ -65,6 +65,8 @@ class MainVm @Inject constructor(
// var mMineMap: MineMap? = null // var mMineMap: MineMap? = null
//Windows 焦点
var hasFocus = MutableLiveData<Boolean>()
//用于拼接 //用于拼接
private val WSTOKEN = "&token=${HTTP_TOKEN}" private val WSTOKEN = "&token=${HTTP_TOKEN}"
......
...@@ -237,7 +237,7 @@ class MockVM @Inject constructor( ...@@ -237,7 +237,7 @@ class MockVM @Inject constructor(
viewModelScope.launch { viewModelScope.launch {
var gson = Gson() var gson = Gson()
var datas = mutableListOf<String>() var datas = mutableListOf<String>()
FileIoUtils.getAssetMock(context, "mock/shiche/CarVehicle_Call.txt", datas) FileIoUtils.getAssetMock(context, "mock/shiche/CarVehicle.txt", datas)
datas.forEach { str -> datas.forEach { str ->
val cCar = gson.fromJson<CarVehicle>(str, CarVehicle::class.java) val cCar = gson.fromJson<CarVehicle>(str, CarVehicle::class.java)
if (cCar.vehiclePos != null) { if (cCar.vehiclePos != null) {
......
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