diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt index 36be0428..8f79c704 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt @@ -403,7 +403,10 @@ class MainViewModel @Inject constructor( naviOption = naviOption, callback = object : OnNaviEngineCallbackListener { - override fun planningPathStatus(status: NaviStatus) { + override fun planningPathStatus( + status: NaviStatus, linkdId: String?, + geometry: String? + ) { when (status) { NaviStatus.NAVI_STATUS_PATH_PLANNING -> naviEngineStatus = 0 NaviStatus.NAVI_STATUS_PATH_ERROR_NODE -> naviEngineStatus = 0 @@ -415,8 +418,24 @@ class MainViewModel @Inject constructor( NaviStatus.NAVI_STATUS_DIRECTION_OFF -> {} } liveDataNaviStatus.postValue(status) + if (geometry != null) { + viewModelScope.launch(Dispatchers.Main) { + + val lineString = GeometryTools.createGeometry(geometry) + val envelope = lineString.envelopeInternal + mapController.animationHandler.animateToBox( + envelope.maxX, + envelope.maxY, + envelope.minX, + envelope.minY + ) + + mapController.lineHandler.showLine(geometry) + } + } } + override suspend fun bindingResults( route: NaviRoute?, list: List diff --git a/app/src/main/java/com/navinfo/omqs/util/NaviEngine.kt b/app/src/main/java/com/navinfo/omqs/util/NaviEngine.kt index d2613b24..fa657a1e 100644 --- a/app/src/main/java/com/navinfo/omqs/util/NaviEngine.kt +++ b/app/src/main/java/com/navinfo/omqs/util/NaviEngine.kt @@ -11,15 +11,17 @@ import com.navinfo.omqs.bean.NaviRoute import com.navinfo.omqs.bean.NaviRouteItem import com.navinfo.omqs.db.RealmOperateHelper import io.realm.Realm +import org.locationtech.jts.geom.Geometry import org.locationtech.jts.geom.LineString import org.locationtech.jts.geom.Point import org.oscim.core.GeoPoint interface OnNaviEngineCallbackListener { - fun planningPathStatus(code: NaviStatus) + fun planningPathStatus(code: NaviStatus, linkdId: String? = null, geometry: String? = null) // fun planningPathError(errorCode: NaviStatus, errorMessage: String) suspend fun bindingResults(route: NaviRoute?, list: List) + } enum class NaviStatus { @@ -205,9 +207,12 @@ class NaviEngine( callback.planningPathStatus(NaviStatus.NAVI_STATUS_PATH_PLANNING) val pathList = mutableListOf() val realm = realmOperateHelper.getSelectTaskRealmInstance() - for (link in taskBean.hadLinkDvoList) { + Log.e("jingo", "路径计算 条数 ${taskBean.hadLinkDvoList.size}") + for (i in 0 until taskBean.hadLinkDvoList.size) { + val link = taskBean.hadLinkDvoList[i] + Log.e("jingo","获取 S E $i 总共 ${taskBean.hadLinkDvoList.size}") //测线不参与导航 - if (link.linkStatus == 3) { + if (link!!.linkStatus == 3) { continue } val route = NaviRoute( @@ -255,13 +260,17 @@ class NaviEngine( } if (!bHasNode) { callback.planningPathStatus( - NaviStatus.NAVI_STATUS_PATH_ERROR_NODE + NaviStatus.NAVI_STATUS_PATH_ERROR_NODE, + link.linkPid, + link.geometry ) return } if (!bHasDir) { callback.planningPathStatus( - NaviStatus.NAVI_STATUS_PATH_ERROR_DIRECTION + NaviStatus.NAVI_STATUS_PATH_ERROR_DIRECTION, + link!!.linkPid, + link.geometry ) return } @@ -346,7 +355,9 @@ class NaviEngine( if (!bHasLast && !bHasNext) { bBreak = false callback.planningPathStatus( - NaviStatus.NAVI_STATUS_PATH_ERROR_BLOCKED + NaviStatus.NAVI_STATUS_PATH_ERROR_BLOCKED, + tempRouteList[0].linkId, + GeometryTools.getLineString(tempRouteList[0].pointList) ) realm.close() return @@ -356,7 +367,9 @@ class NaviEngine( val itemMap: MutableMap> = mutableMapOf() //查询每根link上的关联要素 - for (route in newRouteList) { + for (i in newRouteList.indices) { + val route = newRouteList[i] + Log.e("jingo","获取 插入要素 $i 总共 ${newRouteList.size}") itemMap.clear() //常规点限速 val res = realm.where(RenderEntity::class.java)