[6.5.0][道路事件] 绿波通行业务逻辑

This commit is contained in:
renwj
2024-07-03 19:50:49 +08:00
parent fd087758c9
commit de4d758930
10 changed files with 190 additions and 31 deletions

View File

@@ -2,6 +2,7 @@ package com.mogo.map
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.map.entities.BusStation
import com.mogo.map.entities.CrossRoad
import com.mogo.map.entities.Lane
import com.mogo.map.entities.RoadInfo
import com.zhidaoauto.map.data.point.LonLatPoint
@@ -121,4 +122,9 @@ interface IMogoData {
* 获取公交站点集合
*/
fun getBusStation(routeList: ArrayList<LonLatPoint>): List<BusStation>
}
/**
* 获取路口数据
*/
fun getCrossRoad(lon: Double, lat: Double, angle: Double): CrossRoad?
}

View File

@@ -0,0 +1,9 @@
package com.mogo.map.entities
data class CrossRoad(
val status: Int, // 0: 不在路口 1: 在路口
val tile_id: String, // 起始路口瓦片id或者当前路口的瓦片id
val cross_id: String, // 起始路口id或当前路口id
val tile_id_end: String, //
val cross_id_end: String
)

View File

@@ -6,11 +6,13 @@ import com.mogo.eagle.core.utilcode.mogo.logger.Logger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_MAP
import com.mogo.map.MogoData.Companion.mogoMapData
import com.mogo.map.entities.BusStation
import com.mogo.map.entities.CrossRoad
import com.mogo.map.entities.Lane
import com.mogo.map.location.GDLocationClient.Companion.gdLocationClient
import com.mogo.map.utils.HDMapUtils.getHDCityCode
import com.zhidaoauto.map.data.point.LonLatPoint
import com.zhidaoauto.map.data.road.CenterLine
import com.zhidaoauto.map.data.road.RoadCross
import com.zhidaoauto.map.data.road.RoadNameInfo
import com.zhidaoauto.map.data.road.RoadRectInfos
import com.zhidaoauto.map.data.road.RoutePath
@@ -21,6 +23,7 @@ import com.zhidaoauto.map.sdk.open.abs.OnHdDataDownByCityListener
import com.zhidaoauto.map.sdk.open.data.CityInfo
import com.zhidaoauto.map.sdk.open.data.MapDataApi
import java.util.concurrent.CountDownLatch
import java.util.concurrent.atomic.AtomicReference
/**
* 地图数据工具,涉及到数据调用可能会有耗时建议IO操作
@@ -303,4 +306,18 @@ object MapDataWrapper : IMogoData {
latch.await()
return resultList
}
override fun getCrossRoad(lon: Double, lat: Double, angle: Double): CrossRoad? {
val latch = CountDownLatch(1)
val temp = AtomicReference<CrossRoad>()
MapDataApi.getCrossRoad(lon, lat, angle.toFloat(), object : IResult<RoadCross> {
override fun result(code: Int, result: RoadCross?) {
temp.set(CrossRoad(result?.status ?: 0, result?.tile_id ?: "", result?.cross_id ?: "", result?.tile_id_end ?: "", result?.cross_id_end ?: ""))
latch.countDown()
}
})
latch.await()
return temp.get()
}
}