From febcc2e5df598e99941cefd14eb8b8d6412420dd Mon Sep 17 00:00:00 2001 From: chenfufeng Date: Fri, 5 Jul 2024 15:10:49 +0800 Subject: [PATCH] =?UTF-8?q?[6.5.0][Feat]=E6=96=B0=E5=A2=9E=E8=A1=8C?= =?UTF-8?q?=E7=A8=8B=E6=80=BB=E8=A7=88=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/travelreality/CrossDeviceBean.kt | 15 + .../business/travelreality/EventBean.kt | 13 + .../function/business/travelreality/Point.kt | 3 + .../travelreality/TravelRealityModel.kt | 115 +++ .../travelreality/TravelRealityService.kt | 69 ++ .../eagle/core/function/view/OverMapView.kt | 3 - .../core/function/view/TravelRealityView.kt | 732 ++++++++++++++++++ .../res/drawable-xhdpi/mogo_power_nor.png | Bin 0 -> 680 bytes .../res/drawable-xhdpi/mogo_road_over.png | Bin 0 -> 1236 bytes .../res/drawable-xhdpi/mogo_tanchalukou.png | Bin 0 -> 3639 bytes .../res/drawable-xhdpi/mogo_v2x_detail_bg.png | Bin 0 -> 57569 bytes .../res/drawable-xhdpi/mogo_xiaozhi_icon.png | Bin 0 -> 54703 bytes .../mogo_xingren_pengzhuang.png | Bin 0 -> 3669 bytes .../res/drawable-xhdpi/mogo_yongdu_nor.png | Bin 0 -> 3416 bytes .../res/layout/module_travel_reality_view.xml | 14 + .../src/main/res/values/attrs.xml | 58 +- .../res/drawable-xhdpi/mogo_jingzhi_nor.png | Bin 0 -> 2539 bytes .../res/drawable-xhdpi/mogo_quanxi_lukou.png | Bin 0 -> 3312 bytes .../res/drawable-xhdpi/mogo_shigong_image.png | Bin 0 -> 3442 bytes .../res/drawable-xhdpi/mogo_shigu_nor.png | Bin 0 -> 3200 bytes .../core/utilcode/util/LocationUtils.java | 113 ++- 21 files changed, 1117 insertions(+), 18 deletions(-) create mode 100644 core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/CrossDeviceBean.kt create mode 100644 core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/EventBean.kt create mode 100644 core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/Point.kt create mode 100644 core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/TravelRealityModel.kt create mode 100644 core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/TravelRealityService.kt create mode 100644 core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/TravelRealityView.kt create mode 100644 core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/mogo_power_nor.png create mode 100644 core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/mogo_road_over.png create mode 100644 core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/mogo_tanchalukou.png create mode 100644 core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/mogo_v2x_detail_bg.png create mode 100644 core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/mogo_xiaozhi_icon.png create mode 100644 core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/mogo_xingren_pengzhuang.png create mode 100644 core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/mogo_yongdu_nor.png create mode 100644 core/function-impl/mogo-core-function-map/src/main/res/layout/module_travel_reality_view.xml create mode 100644 core/mogo-core-res/src/main/res/drawable-xhdpi/mogo_jingzhi_nor.png create mode 100644 core/mogo-core-res/src/main/res/drawable-xhdpi/mogo_quanxi_lukou.png create mode 100644 core/mogo-core-res/src/main/res/drawable-xhdpi/mogo_shigong_image.png create mode 100644 core/mogo-core-res/src/main/res/drawable-xhdpi/mogo_shigu_nor.png diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/CrossDeviceBean.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/CrossDeviceBean.kt new file mode 100644 index 0000000000..eb960e4f21 --- /dev/null +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/CrossDeviceBean.kt @@ -0,0 +1,15 @@ +package com.mogo.eagle.core.function.business.travelreality + +data class CrossDeviceBean( + var crossingId: String?, + var lon: Double, + var roadUniqueId: String?, + var lat: Double, + var deviceInfoList: List? +) + +data class DeviceInfoBean( + var deviceIp: String?, + var lon: Double, + var lat: Double +) diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/EventBean.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/EventBean.kt new file mode 100644 index 0000000000..9e05a4eb14 --- /dev/null +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/EventBean.kt @@ -0,0 +1,13 @@ +package com.mogo.eagle.core.function.business.travelreality +data class EventBean( + var poiType: String?,// 事件类型 + var ip: String?,// 摄像头ip + var id: String?, + var lon: Double,// 施工、交通事故的中心点坐标 + var lat: Double,// 拥堵事件的第一个点 + var centerJwdLine: List?,// 拥堵的路段 + var polygon: List?,// 施工、交通事故(延后50m的) + var origPolygon: List?// 施工、交通事故(识别的) +) + +data class GeoCoord(var lon: Double, var lat: Double) \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/Point.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/Point.kt new file mode 100644 index 0000000000..f9b7d93da4 --- /dev/null +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/Point.kt @@ -0,0 +1,3 @@ +package com.mogo.eagle.core.function.business.travelreality + +data class Point(var lon: Double, var lat: Double) \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/TravelRealityModel.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/TravelRealityModel.kt new file mode 100644 index 0000000000..632d89133c --- /dev/null +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/TravelRealityModel.kt @@ -0,0 +1,115 @@ +package com.mogo.eagle.core.function.business.travelreality + +import com.mogo.commons.constants.HostConst +import com.mogo.eagle.core.data.BaseResponse +import com.mogo.eagle.core.data.Response +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.eagle.core.network.apiCall +import com.mogo.eagle.core.network.apiResponseCall +import com.mogo.eagle.core.network.request +import com.mogo.eagle.core.utilcode.util.GsonUtils +import com.mogo.eagle.core.utilcode.util.Md5Util +import retrofit2.http.Query +import java.util.Locale + +class TravelRealityModel private constructor() { + + companion object { + val travelNetWorkModel by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + TravelRealityModel() + } + } + + private fun getNetWorkApi(baseUrl: String = HostConst.getNDEHost()): TravelRealityService { + return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl) + .create(TravelRealityService::class.java) + } + + /** + * 查询道路事件 + */ + fun getEventsWithTrajRequest(reqData: List, + onSuccess: ((List) -> Unit), onError: ((String) -> Unit)){ + request?>>{ + loader { + apiResponseCall{ + val time = System.currentTimeMillis().toString() + val md5String = "${ROAD_EVENT_TRAJECTORY.uppercase(Locale.getDefault())}$time" + getNetWorkApi(HostConst.getNDEHost()).getEventsWithTrajRequest(Md5Util.getMD5Result(md5String), time, reqData) + } + } + onSuccess { + onSuccess.invoke(it.data ?: ArrayList()) + } + onError{ + onError.invoke(it.message ?: "") + } + } + } + + /** + * 查询路口设备 + */ + fun getCrossDevice(lon: Double, lat: Double, cityCode: String?, + onSuccess: ((List) -> Unit), onError: ((String) -> Unit)) { + request?>>{ + loader { + apiCall{ + val time = System.currentTimeMillis().toString() + val md5String = "${CROSS_DEVICE.uppercase(Locale.getDefault())}$time" + getNetWorkApi(HostConst.getNDEHost()).getCrossDevice(Md5Util.getMD5Result(md5String), time, "", lon, lat, cityCode) + } + } + onSuccess { + onSuccess.invoke(it.result ?: ArrayList()) + } + onError{ + onError.invoke(it.message ?: "") + } + } + } + + /** + * 智慧路口路网范围 + */ + fun getCityRoadRange(lon: Double, lat: Double, cityCode: String?, + onSuccess: ((List?>?) -> Unit), onError: ((String) -> Unit)) { + request?>?>>{ + loader { + apiCall{ + val time = System.currentTimeMillis().toString() + val md5String = "${CITY_ROAD_RANGE.uppercase(Locale.getDefault())}$time" + getNetWorkApi(HostConst.getNDEHost()).getCityRoadRange(Md5Util.getMD5Result(md5String), time, lon, lat, cityCode) + } + } + onSuccess { + onSuccess.invoke(it.result) + } + onError{ + onError.invoke(it.message ?: "") + } + } + } + + /** + * 智慧道路轨迹 + */ + fun getCityRoadTrack(lon: Double, lat: Double, cityCode: String?, + onSuccess: ((List?>?>?) -> Unit), onError: ((String) -> Unit)) { + request?>?>?>>{ + loader { + apiCall{ + val time = System.currentTimeMillis().toString() + val md5String = "${CITY_ROAD_TRACK.uppercase(Locale.getDefault())}$time" + getNetWorkApi(HostConst.getNDEHost()).getCityRoadTrack(Md5Util.getMD5Result(md5String), time, lon, lat, cityCode) + } + } + onSuccess { + onSuccess.invoke(it.result) + } + onError{ + onError.invoke(it.message ?: "") + } + } + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/TravelRealityService.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/TravelRealityService.kt new file mode 100644 index 0000000000..55b30de4bb --- /dev/null +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/travelreality/TravelRealityService.kt @@ -0,0 +1,69 @@ +package com.mogo.eagle.core.function.business.travelreality + +import com.mogo.eagle.core.data.BaseResponse +import com.mogo.eagle.core.data.Response +import retrofit2.http.Body +import retrofit2.http.GET +import retrofit2.http.Header +import retrofit2.http.Headers +import retrofit2.http.POST +import retrofit2.http.Query + +const val ROAD_EVENT_TRAJECTORY = "/abilitySupport/trajInfo/getEventsWithTrajectories" +const val CROSS_DEVICE = "/abilitySupport/rss/crossDevice" +const val CITY_ROAD_RANGE = "/abilitySupport/rss/cityRoadRange" +const val CITY_ROAD_TRACK = "/abilitySupport/rss/cityRoadTrack" + +interface TravelRealityService { + + /** + * 根据做标记集合获取道路事件 + */ + @Headers("Content-type:application/json;charset=UTF-8") + @POST(ROAD_EVENT_TRAJECTORY) + suspend fun getEventsWithTrajRequest( + @Header("MogoAuthKey") authKey: String, + @Header("MogoReqTime") time: String, + @Body reqData: List + ): Response> + + /** + * 查询路口设备 + */ + @Headers("Content-type:application/json;charset=UTF-8") + @GET(CROSS_DEVICE) + suspend fun getCrossDevice( + @Header("MogoAuthKey") authKey: String, + @Header("MogoReqTime") time: String, + @Query("roadUniqueId") roadUniqueId: String?, + @Query("lon") lon: Double, + @Query("lat") lat: Double, + @Query("cityCode") cityCode: String? + ): BaseResponse> + + /** + * 查询路口路网范围 + */ + @Headers("Content-type:application/json;charset=UTF-8") + @GET(CITY_ROAD_RANGE) + suspend fun getCityRoadRange( + @Header("MogoAuthKey") authKey: String, + @Header("MogoReqTime") time: String, + @Query("lon") lon: Double, + @Query("lat") lat: Double, + @Query("cityCode") cityCode: String? + ): BaseResponse>> + + /** + * 查询智慧道路轨迹 + */ + @Headers("Content-type:application/json;charset=UTF-8") + @GET(CITY_ROAD_TRACK) + suspend fun getCityRoadTrack( + @Header("MogoAuthKey") authKey: String, + @Header("MogoReqTime") time: String, + @Query("lon") lon: Double, + @Query("lat") lat: Double, + @Query("cityCode") cityCode: String? + ): BaseResponse>>> +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt index c2c8e9d9cc..bb8801b16a 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/OverMapView.kt @@ -237,9 +237,6 @@ class OverMapView @JvmOverloads constructor( if (mMapView != null) { mMapView!!.onDestroy() } - if (mMapView != null) { - mMapView!!.onDestroy() - } } // =================必须通知高德地图生命周期的变化================= diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/TravelRealityView.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/TravelRealityView.kt new file mode 100644 index 0000000000..4155ea76b0 --- /dev/null +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/view/TravelRealityView.kt @@ -0,0 +1,732 @@ +package com.mogo.eagle.core.function.view + +import android.content.Context +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.graphics.Color +import android.os.Bundle +import android.os.Handler +import android.os.HandlerThread +import android.os.Looper +import android.os.Message +import android.util.AttributeSet +import android.util.Log +import android.view.LayoutInflater +import android.widget.TextView +import androidx.constraintlayout.widget.ConstraintLayout +import com.amap.api.maps.AMap +import com.amap.api.maps.CameraUpdate +import com.amap.api.maps.CameraUpdateFactory +import com.amap.api.maps.CoordinateConverter +import com.amap.api.maps.TextureMapView +import com.amap.api.maps.model.BitmapDescriptor +import com.amap.api.maps.model.BitmapDescriptorFactory +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.CustomMapStyleOptions +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.LatLngBounds +import com.amap.api.maps.model.MarkerOptions +import com.amap.api.maps.model.PolylineOptions +import com.google.gson.reflect.TypeToken +import com.mogo.eagle.core.data.map.MogoLocation +import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisLocationGCJ02Listener +import com.mogo.eagle.core.function.api.autopilot.IMoGoPlanningRottingListener +import com.mogo.eagle.core.function.business.travelreality.CrossDeviceBean +import com.mogo.eagle.core.function.business.travelreality.EventBean +import com.mogo.eagle.core.function.business.travelreality.Point +import com.mogo.eagle.core.function.business.travelreality.TravelRealityModel.Companion.travelNetWorkModel +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager +import com.mogo.eagle.core.function.call.autopilot.CallerPlanningRottingListenerManager +import com.mogo.eagle.core.function.map.R +import com.mogo.eagle.core.utilcode.mogo.MapAssetStyleUtils +import com.mogo.eagle.core.utilcode.util.DrivingDirectionUtils +import com.mogo.eagle.core.utilcode.util.GsonUtils +import com.mogo.eagle.core.utilcode.util.LocationUtils +import com.mogo.eagle.core.utilcode.util.ToastUtils +import me.jessyan.autosize.utils.AutoSizeUtils +import mogo.telematics.pad.MessagePad + +/** + * 行程实况View + * + * @author chenfufeng + */ +class TravelRealityView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : ConstraintLayout(context, attrs, defStyleAttr), IMoGoChassisLocationGCJ02Listener, + IMoGoPlanningRottingListener { + + private var mContext: Context? = null + + private var mMapView: TextureMapView? = null + private var mAMap: AMap? = null + + // =============自定义属性相关============= + private var mapStylePath: String? = null + private var mapStyleExtraPath: String? = null + private var carDrawable: Int = -1 + private var compassDrawable: Int = -1 + private var startPointDrawable: Int = -1 + private var endPointDrawable: Int = -1 + private var leftPadding: Int = 100 + private var topPadding: Int = 150 + private var rightPadding: Int = 100 + private var bottomPadding: Int = 250 + + + private var roadRangeBitmap: BitmapDescriptor? = null + private var roadRangeDrawable: Int = -1 + private val roadTrajectoryBitmap by lazy { + BitmapDescriptorFactory.fromResource(R.drawable.mogo_road_over) + } + + // 测试时使用 +// private val pointBitmap1 by lazy { +// BitmapDescriptorFactory.fromBitmap(getBitmap1()) +// } +// +// private val markerOptionsList1 by lazy { +// ArrayList() +// } +// +// private val pointBitmap2 by lazy { +// BitmapDescriptorFactory.fromBitmap(getBitmap2()) +// } +// +// private val markerOptionsList2 by lazy { +// ArrayList() +// } + + /** + * 低频的 + */ + private var nonFrequentHandler: NonFrequentHandler? = null + + @Volatile + private var lastTime = 0L + + private var reqData: List? = null + + private var testTime = 0L + + companion object { + private const val TAG = "TravelRealityView" + + private const val DRAW_POLY_LINE = 1 + private const val DRAW_CAR_LOCATION = 2 + private const val DRAW_ROAD_EVENT = 3 + private const val DRAW_CROSS_DEVICE = 4 + private const val DRAW_ROAD_RANGE = 5 + private const val DRAW_ROAD_TRAJECTORY = 6 + } + + init { + try { + val typedArray = context.obtainStyledAttributes(attrs, R.styleable.TravelRealityView) + mapStylePath = typedArray.getString(R.styleable.TravelRealityView_mapStylePath) + mapStyleExtraPath = + typedArray.getString(R.styleable.TravelRealityView_mapStyleExtraPath) + carDrawable = typedArray.getResourceId(R.styleable.TravelRealityView_carDrawable, -1) + compassDrawable = + typedArray.getResourceId(R.styleable.TravelRealityView_compassDrawable, -1) + roadRangeDrawable = + typedArray.getResourceId(R.styleable.TravelRealityView_roadRangeDrawable, -1) + startPointDrawable = + typedArray.getResourceId(R.styleable.TravelRealityView_startPointDrawable, -1) + endPointDrawable = + typedArray.getResourceId(R.styleable.TravelRealityView_endPointDrawable, -1) + leftPadding = typedArray.getInt(R.styleable.TravelRealityView_leftPadding, 0) + topPadding = typedArray.getInt(R.styleable.TravelRealityView_topPadding, 0) + rightPadding = typedArray.getInt(R.styleable.TravelRealityView_rightPadding, 0) + bottomPadding = typedArray.getInt(R.styleable.TravelRealityView_bottomPadding, 0) + typedArray.recycle() + initView(context) + } catch (e: Exception) { + e.printStackTrace() + } + } + + // =================必须通知高德地图生命周期的变化================= + fun onCreateView(savedInstanceState: Bundle?) { + mMapView?.onCreate(savedInstanceState) + } + + fun onResume() { + mMapView?.onResume() + } + + fun onPause() { + mMapView?.onPause() + } + + fun onDestroy() { + mMapView?.onDestroy() + } + // =================必须通知高德地图生命周期的变化================= + + private fun initView(context: Context) { + mContext = context + val mapView = + LayoutInflater.from(context).inflate(R.layout.module_travel_reality_view, this) + mMapView = mapView.findViewById(R.id.travelMapView) + roadRangeBitmap = + BitmapDescriptorFactory.fromResource(if (roadRangeDrawable != -1) roadRangeDrawable else R.drawable.taxi_map_arrow_arrived) + initAMapView() + } + + private fun getBitmap1(): Bitmap { + val options = BitmapFactory.Options() + options.inSampleSize = 2 + options.inJustDecodeBounds = false + return BitmapFactory.decodeResource(resources, R.drawable.loc_azure_bg, options) + } + + private fun getBitmap2(): Bitmap { + val options = BitmapFactory.Options() + options.inSampleSize = 2 + options.inJustDecodeBounds = false + return BitmapFactory.decodeResource(resources, R.drawable.count_bg, options) + } + + private fun initAMapView() { + mAMap = mMapView?.map + val mapStyleOptions = CustomMapStyleOptions() + if (!mapStylePath.isNullOrEmpty() && !mapStyleExtraPath.isNullOrEmpty()) { + mapStyleOptions.styleData = + MapAssetStyleUtils.getAssetsStyle(context, mapStylePath) + mapStyleOptions.styleExtraData = + MapAssetStyleUtils.getAssetsExtraStyle(context, mapStyleExtraPath) + mapStyleOptions.isEnable = true + } + // 地图文字标注 + mAMap?.showMapText(true) + //设置希望展示的地图缩放级别 + mAMap?.moveCamera(CameraUpdateFactory.zoomTo(14f)) + //设置地图的样式 + mAMap?.uiSettings?.let { + //地图缩放级别的交换按钮 + it.isZoomControlsEnabled = true + //所有手势 + it.setAllGesturesEnabled(true) + //指南针 + it.isCompassEnabled = false + //设置倾斜手势是否可用。 + it.isTiltGesturesEnabled = false + //定位按钮 + it.isMyLocationButtonEnabled = true + } + + mAMap?.setOnMapLoadedListener { + mAMap?.setCustomMapStyle(mapStyleOptions) + // 实时路况图层关闭,必须添加在loaded结束之后,其他位置不生效 + mAMap?.isTrafficEnabled = false + mAMap?.showBuildings(false) +// mAMap?.uiSettings?.isZoomControlsEnabled = false +// mAMap?.animateCamera(CameraUpdateFactory.changeTilt(30f)) + } + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + CallerPlanningRottingListenerManager.addListener(TAG, this) + // 注册定位监听 + CallerChassisLocationGCJ02ListenerManager.addListener(TAG, this) + initHandlers() + } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + // 注册定位监听 + CallerChassisLocationGCJ02ListenerManager.removeListener(TAG) + CallerPlanningRottingListenerManager.removeListener(TAG) + nonFrequentHandler?.looper?.quitSafely() + nonFrequentHandler = null + } + + private fun initHandlers() { + val nonFrequentThread = HandlerThread("travel_reality_thread") + nonFrequentThread.start() + nonFrequentHandler = NonFrequentHandler(nonFrequentThread.looper) + } + + private fun reqTrajectoryTest() { + val json = + "[{\"lat\":26.81937733437377,\"lon\":112.57535281567407},{\"lat\":26.81945931447823,\"lon\":112.57532226983858}," + + "{\"lat\":26.820654610710495,\"lon\":112.5747724572884},{\"lat\":26.82123411157205,\"lon\":112.57446700543453}," + + "{\"lat\":26.82192608026401,\"lon\":112.5741080926201},{\"lat\":26.822091924747422,\"lon\":112.57402409051497}," + + "{\"lat\":26.82217198311328,\"lon\":112.57397827179898},{\"lat\":26.822751478727742,\"lon\":112.57368044319112}," + + "{\"lat\":26.823003074132348,\"lon\":112.57352007651988},{\"lat\":26.82327753332255,\"lon\":112.57333679968579}," + + "{\"lat\":26.823437581007436,\"lon\":112.57316880115862},{\"lat\":26.82353473462254,\"lon\":112.57304662092753}," + + "{\"lat\":26.823599481049378,\"lon\":112.57293971409484},{\"lat\":26.82373275263248,\"lon\":112.57268771854648}," + + "{\"lat\":26.823812678691333,\"lon\":112.57249681223165},{\"lat\":26.823863914316153,\"lon\":112.57221427243014}," + + "{\"lat\":26.823863543155838,\"lon\":112.57180955163894},{\"lat\":26.823848051950634,\"lon\":112.57155755260963}," + + "{\"lat\":26.82376752893978,\"lon\":112.57110700477688},{\"lat\":26.82321958288029,\"lon\":112.5686097226906}," + + "{\"lat\":26.82319656741949,\"lon\":112.56848752320151},{\"lat\":26.82317357600292,\"lon\":112.56838823588228}," + + "{\"lat\":26.822583129427166,\"lon\":112.56568437427828},{\"lat\":26.822567763188122,\"lon\":112.56559271125079}," + + "{\"lat\":26.822567763188122,\"lon\":112.56559271125079},{\"lat\":26.822613311780497,\"lon\":112.56540937833189}," + + "{\"lat\":26.822778835723827,\"lon\":112.56508853541045},{\"lat\":26.822778835723827,\"lon\":112.56508853541045}," + + "{\"lat\":26.82335830821441,\"lon\":112.56486696378353},{\"lat\":26.825073836123234,\"lon\":112.5642098752998}," + + "{\"lat\":26.82587831132585,\"lon\":112.56397299890796},{\"lat\":26.826602716871196,\"lon\":112.56375904383397}," + + "{\"lat\":26.826757011379495,\"lon\":112.56362152304669},{\"lat\":26.826757011379495,\"lon\":112.56362152304669}," + + "{\"lat\":26.826665118069972,\"lon\":112.56334650820811},{\"lat\":26.826515909977296,\"lon\":112.56299509732794}," + + "{\"lat\":26.826273047969202,\"lon\":112.56249089072236},{\"lat\":26.825741353462305,\"lon\":112.56136019981324}," + + "{\"lat\":26.825545885183946,\"lon\":112.5606802184245},{\"lat\":26.825515221290765,\"lon\":112.56057325303}," + + "{\"lat\":26.82537828319818,\"lon\":112.55950355643967},{\"lat\":26.825358966712418,\"lon\":112.55933545613247}," + + "{\"lat\":26.82533550731808,\"lon\":112.55894576231651},{\"lat\":26.825329684542123,\"lon\":112.55761615913678}," + + "{\"lat\":26.82531512968552,\"lon\":112.555644526428},{\"lat\":26.825332951146304,\"lon\":112.55488027750438}," + + "{\"lat\":26.825332951146304,\"lon\":112.55488027750438},{\"lat\":26.825582749368,\"lon\":112.55486497384544}," + + "{\"lat\":26.832195779849293,\"lon\":112.55566694572363},{\"lat\":26.83305984045991,\"lon\":112.55577387436938}," + + "{\"lat\":26.833412716051612,\"lon\":112.55581970205667},{\"lat\":26.833983005722352,\"lon\":112.55587315586395}," + + "{\"lat\":26.834465509986607,\"lon\":112.55588840477134},{\"lat\":26.83493085073919,\"lon\":112.55590365493417}," + + "{\"lat\":26.835735483067072,\"lon\":112.55581953062685},{\"lat\":26.83602718493831,\"lon\":112.55577365536547}," + + "{\"lat\":26.837897224427703,\"lon\":112.55530733220453},{\"lat\":26.840266626992527,\"lon\":112.55468046640051}," + + "{\"lat\":26.842555914048862,\"lon\":112.5540535884595},{\"lat\":26.842969582911035,\"lon\":112.55396184290737}," + + "{\"lat\":26.84317738357361,\"lon\":112.55392361286312},{\"lat\":26.843375636130915,\"lon\":112.55387774049657}," + + "{\"lat\":26.84422222305707,\"lon\":112.55380124821464},{\"lat\":26.845488430408043,\"lon\":112.553770582712}," + + "{\"lat\":26.845890797709917,\"lon\":112.55376290998989},{\"lat\":26.8462931778245,\"lon\":112.55376288026709}," + + "{\"lat\":26.846994945978572,\"lon\":112.55375518542454},{\"lat\":26.84857199311408,\"lon\":112.55372449688247}," + + "{\"lat\":26.850915603316924,\"lon\":112.55366317952681},{\"lat\":26.851264598540528,\"lon\":112.55367079677764}," + + "{\"lat\":26.851613580683804,\"lon\":112.55367077099322},{\"lat\":26.852782561801757,\"lon\":112.55366304158481}," + + "{\"lat\":26.854128918956658,\"lon\":112.55367058513775},{\"lat\":26.85416133799072,\"lon\":112.55367058274223}," + + "{\"lat\":26.854773485472688,\"lon\":112.55367053750845},{\"lat\":26.85698175172949,\"lon\":112.55364744520502}," + + "{\"lat\":26.859598084724535,\"lon\":112.55360903659395},{\"lat\":26.862271647879098,\"lon\":112.55358590979833}," + + "{\"lat\":26.865147332784925,\"lon\":112.55355512493922},{\"lat\":26.865349473200677,\"lon\":112.55355510999556}," + + "{\"lat\":26.86715728059924,\"lon\":112.5535473332667},{\"lat\":26.8700749470803,\"lon\":112.55353947446217}," + + "{\"lat\":26.87053068868336,\"lon\":112.55352415459471},{\"lat\":26.872084848173277,\"lon\":112.55350875349178}," + + "{\"lat\":26.87280568452292,\"lon\":112.55350870018658},{\"lat\":26.874220619342925,\"lon\":112.55348566625867}," + + "{\"lat\":26.874220619342925,\"lon\":112.55348566625867},{\"lat\":26.8743981499678,\"lon\":112.55359265628044}," + + "{\"lat\":26.876129653094548,\"lon\":112.55357724209203},{\"lat\":26.876238350333104,\"lon\":112.55357723405288}," + + "{\"lat\":26.87722422693687,\"lon\":112.55356187499282},{\"lat\":26.878499948626235,\"lon\":112.55353885139881}," + + "{\"lat\":26.878742146279425,\"lon\":112.5535464765656},{\"lat\":26.87904156585159,\"lon\":112.55356174057314}," + + "{\"lat\":26.879174347427238,\"lon\":112.55314900085355},{\"lat\":26.879174347427238,\"lon\":112.55314900085355}," + + "{\"lat\":26.879116545005985,\"lon\":112.55280505766768},{\"lat\":26.878943245115085,\"lon\":112.55184963298143}," + + "{\"lat\":26.878806472640868,\"lon\":112.55107761984246},{\"lat\":26.878713941862863,\"lon\":112.55052725736591}," + + "{\"lat\":26.878437158373803,\"lon\":112.5483333129957},{\"lat\":26.878283777019536,\"lon\":112.54691898636362}," + + "{\"lat\":26.8782233056314,\"lon\":112.54623090393771},{\"lat\":26.878174442724657,\"lon\":112.54563454956121}," + + "{\"lat\":26.878164554891434,\"lon\":112.54545869832023},{\"lat\":26.878123256507333,\"lon\":112.54483938643703}," + + "{\"lat\":26.878067664889805,\"lon\":112.54376893263695},{\"lat\":26.87802073724931,\"lon\":112.54141376662929}," + + "{\"lat\":26.878020473600568,\"lon\":112.54129141419749},{\"lat\":26.878006686433814,\"lon\":112.54021315914473}," + + "{\"lat\":26.877995617191544,\"lon\":112.53951724050327},{\"lat\":26.87798902932084,\"lon\":112.53912721215966}," + + "{\"lat\":26.87798417185096,\"lon\":112.53866069993084},{\"lat\":26.87797034314032,\"lon\":112.5376052819373}," + + "{\"lat\":26.877904771969245,\"lon\":112.53244233742839},{\"lat\":26.87789134593889,\"lon\":112.53163148144348}," + + "{\"lat\":26.87786602244677,\"lon\":112.53064465683066},{\"lat\":26.87782568523666,\"lon\":112.52976490461232}," + + "{\"lat\":26.877809833418425,\"lon\":112.52952775023115},{\"lat\":26.877809660077073,\"lon\":112.52945889830228}," + + "{\"lat\":26.877793497045896,\"lon\":112.52909933698427},{\"lat\":26.877765422377227,\"lon\":112.52855616264061}," + + "{\"lat\":26.877765422377227,\"lon\":112.52855616264061},{\"lat\":26.877651755590847,\"lon\":112.52662055504709}," + + "{\"lat\":26.87759103383806,\"lon\":112.52527397999641},{\"lat\":26.877578807673792,\"lon\":112.52497558422694}," + + "{\"lat\":26.877550150107766,\"lon\":112.5242334096616},{\"lat\":26.8775454631642,\"lon\":112.52390439907114}," + + "{\"lat\":26.8775705911727,\"lon\":112.52331523086403},{\"lat\":26.877599976720568,\"lon\":112.52289438998851}," + + "{\"lat\":26.877700379351634,\"lon\":112.52193791396827},{\"lat\":26.87783653603692,\"lon\":112.52081306743382}," + + "{\"lat\":26.87794659907845,\"lon\":112.51991775931802},{\"lat\":26.87803420576694,\"lon\":112.51918313363727}," + + "{\"lat\":26.878091905110153,\"lon\":112.51867041904868},{\"lat\":26.878169213335745,\"lon\":112.51766793293663}," + + "{\"lat\":26.878242581649566,\"lon\":112.5166271615322},{\"lat\":26.878273796063315,\"lon\":112.51619860194072}," + + "{\"lat\":26.878303472199264,\"lon\":112.51522667932018},{\"lat\":26.87829062072998,\"lon\":112.51472923351307}," + + "{\"lat\":26.878258848003124,\"lon\":112.51428535631486},{\"lat\":26.87790199901372,\"lon\":112.51153784231195}," + + "{\"lat\":26.87790199901372,\"lon\":112.51153784231195},{\"lat\":26.878286565374772,\"lon\":112.5113158617034}," + + "{\"lat\":26.878286565374772,\"lon\":112.5113158617034},{\"lat\":26.878431428456157,\"lon\":112.51129289027774}," + + "{\"lat\":26.878667958535303,\"lon\":112.5113158331442},{\"lat\":26.878667958535303,\"lon\":112.5113158331442}," + + "{\"lat\":26.878678138797152,\"lon\":112.51087957995009},{\"lat\":26.878690352202895,\"lon\":112.509831030359}," + + "{\"lat\":26.878699530812526,\"lon\":112.50970857034845},{\"lat\":26.878737491943227,\"lon\":112.5096473377598}," + + "{\"lat\":26.878737491943227,\"lon\":112.5096473377598},{\"lat\":26.87879075331014,\"lon\":112.5096014114246}," + + "{\"lat\":26.881275571457582,\"lon\":112.50961653268486},{\"lat\":26.881767589811375,\"lon\":112.50962414954007}," + + "{\"lat\":26.882122440471107,\"lon\":112.50967769900092},{\"lat\":26.88221980681574,\"lon\":112.50971596028774}," + + "{\"lat\":26.88257321771232,\"lon\":112.50993023747169},{\"lat\":26.88257321771232,\"lon\":112.50993023747169}," + + "{\"lat\":26.88351446532152,\"lon\":112.50900406412066},{\"lat\":26.883643691685222,\"lon\":112.50885097840336}," + + "{\"lat\":26.88371196217497,\"lon\":112.5087208584019},{\"lat\":26.884099751766627,\"lon\":112.5076492862477}," + + "{\"lat\":26.884099751766627,\"lon\":112.5076492862477},{\"lat\":26.884364549439884,\"lon\":112.50755741913363}," + + "{\"lat\":26.884829689791164,\"lon\":112.50750380663162},{\"lat\":26.884919429072728,\"lon\":112.50754206963039}," + + "{\"lat\":26.88496340137097,\"lon\":112.5075803360432},{\"lat\":26.88500174259158,\"lon\":112.50764921859975}," + + "{\"lat\":26.885013476143417,\"lon\":112.50774871879156},{\"lat\":26.885055608713724,\"lon\":112.50780994699682}," + + "{\"lat\":26.885055608713724,\"lon\":112.50780994699682},{\"lat\":26.885056259143553,\"lon\":112.50803191023526}," + + "{\"lat\":26.885018276929266,\"lon\":112.50808549033137},{\"lat\":26.884766782736666,\"lon\":112.50816204804912}," + + "{\"lat\":26.884722922723803,\"lon\":112.50816205133796},{\"lat\":26.884677447004925,\"lon\":112.50826155514717}," + + "{\"lat\":26.884616984162705,\"lon\":112.50845290622735},{\"lat\":26.884527446696502,\"lon\":112.50848352834187}," + + "{\"lat\":26.884367351784473,\"lon\":112.50851415573345},{\"lat\":26.884312184268587,\"lon\":112.50856008292808}," + + "{\"lat\":26.88427096917155,\"lon\":112.50881266232054},{\"lat\":26.884292303244706,\"lon\":112.50893512163981}," + + "{\"lat\":26.88426006366657,\"lon\":112.50899635443699},{\"lat\":26.884183964013573,\"lon\":112.50905759046893}," + + "{\"lat\":26.884146025794323,\"lon\":112.50912647736762},{\"lat\":26.884156260593674,\"lon\":112.51002196307275}," + + "{\"lat\":26.88423087653796,\"lon\":112.51010614790864},{\"lat\":26.884343609318197,\"lon\":112.51018267612086}," + + "{\"lat\":26.884452616959017,\"lon\":112.51028981912732},{\"lat\":26.88451038077976,\"lon\":112.51048115574633}," + + "{\"lat\":26.884507321034185,\"lon\":112.51074137875689},{\"lat\":26.884454856613047,\"lon\":112.51106283289384}," + + "{\"lat\":26.88435289830749,\"lon\":112.51141490315304},{\"lat\":26.884321054331565,\"lon\":112.51161389656696}]\n" + + reqData = GsonUtils.fromJson(json, object : TypeToken>() {}.type) + handleGlobalPath(reqData!!) + // 获取道路事件 + travelNetWorkModel.getEventsWithTrajRequest(reqData!!, onSuccess = { + Log.d(TAG, "111$it") + handleRoadEvent(it) + }, onError = { + Log.d(TAG, "111$it") + }) + // 获取路口设备 + travelNetWorkModel.getCrossDevice(112.583797, 26.817827, "0734", onSuccess = { + Log.d(TAG, "222$it") + handleCrossDevices(it) + }, onError = { + Log.d(TAG, "222$it") + }) + // 获取智慧道路轨迹 + travelNetWorkModel.getCityRoadTrack(112.583797, 26.817827, "0734", onSuccess = { + Log.d(TAG, "333$it") + handleRoadTrajectories(it) + }, onError = { + Log.d(TAG, "333$it") + }) +// // 获取智慧路口路网范围 +// travelNetWorkModel.getCityRoadRange(112.583797, 26.817827, "0734", onSuccess = { +// Log.d(TAG, "444$it") +// handleRoadRange(it) +// }, onError = { +// Log.d(TAG, "444$it") +// }) + } + + private fun handleGlobalPath(globalData: List) { + if (globalData.isEmpty() || globalData.size < 2) return + val boundsBuilder = LatLngBounds.Builder() + + val globalOptions = PolylineOptions() + globalOptions.width(AutoSizeUtils.dp2px(context, 20f).toFloat()) + globalOptions.lineJoinType(PolylineOptions.LineJoinType.LineJoinRound) + globalOptions.lineCapType(PolylineOptions.LineCapType.LineCapRound) + globalOptions.color(Color.parseColor("#49DEAE")) + + globalData.forEach { globalPoint -> + val point = coordinateConverterWgsToGcj(globalPoint.lat, globalPoint.lon) +// markerOptionsList1.add(MarkerOptions().also { +// it.position(point) +// it.anchor(0.5f, 0.5f) +// it.icon(pointBitmap1) +// }) + boundsBuilder.include(point) + globalOptions.add(coordinateConverterWgsToGcj(globalPoint.lat, globalPoint.lon)) + } + + val cameraUpdate = CameraUpdateFactory.newLatLngBoundsRect( + boundsBuilder.build(), + AutoSizeUtils.dp2px(context, leftPadding.toFloat()), + AutoSizeUtils.dp2px(context, rightPadding.toFloat()), + AutoSizeUtils.dp2px(context, topPadding.toFloat()), + AutoSizeUtils.dp2px(context, bottomPadding.toFloat()) + ) + mAMap?.moveCamera(cameraUpdate) + +// val startPoint = globalData[0] +// val endPoint = globalData[globalData.size - 1] +// val angle = DrivingDirectionUtils.getLineAngle(endPoint.lon, endPoint.lat, startPoint.lon, startPoint.lat) +// mAMap?.moveCamera(CameraUpdateFactory.changeBearing(LocationUtils.rotateTo90(angle).toFloat())) +// mAMap?.setMapStatusLimits(boundsBuilder.build()) + +// mAMap?.addMarkers(markerOptionsList1, false) + drawPolyline(DRAW_POLY_LINE, globalOptions) + } + + private fun handleRoadEvent(eventList: List) { + val globalList = reqData + if (eventList.isEmpty()) return + testTime = System.currentTimeMillis() + val eventOptionsList = ArrayList() + globalList?.forEachIndexed { index, globalPoint -> + if (index >= 0 && index < globalList.size - 1) { + eventList.forEach { eventBean -> + if (LocationUtils.pointToLine( + globalPoint.lon, + globalPoint.lat, + globalList[index + 1].lon, + globalList[index + 1].lat, + eventBean.lon, + eventBean.lat + ) > 5 + ) { + return@forEach + } + when (eventBean.poiType) { + "10032" -> {// 交通事故 + eventOptionsList.add(MarkerOptions().apply { + position(coordinateConverterWgsToGcj(eventBean.lat, eventBean.lon)) + anchor(0.5f, 0.5f) + icon(BitmapDescriptorFactory.fromResource(R.drawable.mogo_shigu_nor)) + }) + } + + "10006" -> {// 施工 + eventOptionsList.add(MarkerOptions().apply { + position(coordinateConverterWgsToGcj(eventBean.lat, eventBean.lon)) + anchor(0.5f, 0.5f) + icon(BitmapDescriptorFactory.fromResource(R.drawable.mogo_shigong_image)) + }) + } + + "10007" -> {// 拥堵 + eventOptionsList.add(MarkerOptions().apply { + position(coordinateConverterWgsToGcj(eventBean.lat, eventBean.lon)) + anchor(0.5f, 0.5f) + icon(BitmapDescriptorFactory.fromResource(R.drawable.mogo_yongdu_nor)) + }) + } + + "10025" -> {// 静止事件 + eventOptionsList.add(MarkerOptions().apply { + position(coordinateConverterWgsToGcj(eventBean.lat, eventBean.lon)) + anchor(0.5f, 0.5f) + icon(BitmapDescriptorFactory.fromResource(R.drawable.mogo_jingzhi_nor)) + }) + } + + else -> { + eventOptionsList.add(MarkerOptions().apply { + position(coordinateConverterWgsToGcj(eventBean.lat, eventBean.lon)) + anchor(0.5f, 0.5f) + icon(BitmapDescriptorFactory.fromResource(R.drawable.mogo_jingzhi_nor)) + }) + } + } + } + } + } + Log.d(TAG, "过滤掉的事件个数为:${eventList.size - eventOptionsList.size}") + drawMarkers(DRAW_ROAD_EVENT, eventOptionsList) + } + + private fun handleCrossDevices(crossDeviceList: List) { + if (crossDeviceList.isEmpty()) return + val globalList = reqData + val crossOptionsList = ArrayList() + + globalList?.forEachIndexed { index, globalPoint -> + if (index >= 0 && index < globalList.size - 1) { + crossDeviceList.forEach { + it.deviceInfoList?.forEach loop@ { deviceBean -> + if (LocationUtils.pointToLine( + globalPoint.lon, + globalPoint.lat, + globalList[index + 1].lon, + globalList[index + 1].lat, + deviceBean.lon, + deviceBean.lat + ) > 5 + ) { + return@loop + } + + crossOptionsList.add(MarkerOptions().apply { + position(coordinateConverterWgsToGcj(deviceBean.lat, deviceBean.lon)) + anchor(0.5f, 0.5f) + icon(BitmapDescriptorFactory.fromResource(R.drawable.mogo_quanxi_lukou)) + }) + } + } + } + } + drawMarkers(DRAW_CROSS_DEVICE, crossOptionsList) + } + + private fun handleRoadRange(roadRangeList: List?>?) { + if (roadRangeList.isNullOrEmpty()) return + val roadRangeOptions = PolylineOptions() + roadRangeOptions.width(AutoSizeUtils.dp2px(context, 32f).toFloat()) + roadRangeOptions.isUseTexture = true + roadRangeOptions.lineJoinType(PolylineOptions.LineJoinType.LineJoinRound) + roadRangeOptions.lineCapType(PolylineOptions.LineCapType.LineCapSquare) + roadRangeOptions.customTexture = roadTrajectoryBitmap + + roadRangeList.forEach { pointList -> + pointList?.let { + if (it.size < 2) return@let + roadRangeOptions.add(coordinateConverterWgsToGcj(it[1], it[0])) + } + } +// drawPolyline(DRAW_ROAD_RANGE, roadRangeOptions) + } + + /** + * 处理智慧道路轨迹的数据 + */ + private fun handleRoadTrajectories(roadTrajectoryList: List?>?>?) { + val globalList = reqData + if (roadTrajectoryList.isNullOrEmpty() || globalList.isNullOrEmpty()) return + val roadTrajectoryOptionsList = ArrayList() + + roadTrajectoryList.forEach { trajectoryList -> + var distanceTmp = 0.0 + var lastIndex = -1 + var polylineOptionTmp: PolylineOptions? = null + trajectoryList?.forEachIndexed { index, trajPointList -> + if (trajPointList.isNullOrEmpty()) return@forEachIndexed +// // 待绘制的所有智慧道路轨迹点 +// markerOptionsList2.add(MarkerOptions().also { markerOption -> +// markerOption.position(coordinateConverterWgsToGcj(trajPointList[1], trajPointList[0])) +// markerOption.anchor(0.5f, 0.5f) +// markerOption.icon(pointBitmap2) +// }) + + if (index >= 0 && index < trajectoryList.size - 1) { + if (trajPointList.isEmpty() || trajectoryList[index + 1].isNullOrEmpty() + ||trajPointList.size < 2 || trajectoryList[index + 1]!!.size < 2) return + // 遍历所有轨迹点到智慧轨迹线段上的距离 + globalList.forEach { globalPoint -> + distanceTmp = LocationUtils.pointToLine( + trajPointList[0], + trajPointList[1], + trajectoryList[index + 1]!![0], + trajectoryList[index + 1]!![1], + globalPoint.lon, + globalPoint.lat + ) + // 如果距离小于50m则认为在智慧道路内 + if (distanceTmp < 50) { + if (lastIndex < 0 || index - lastIndex > 1) { + // 绘制新的智慧路段轨迹 + polylineOptionTmp = PolylineOptions() + polylineOptionTmp?.let { optionTmp -> + optionTmp.width(AutoSizeUtils.dp2px(context, 52f).toFloat()) + optionTmp.isUseTexture = true + optionTmp.lineJoinType(PolylineOptions.LineJoinType.LineJoinRound) + optionTmp.lineCapType(PolylineOptions.LineCapType.LineCapSquare) + optionTmp.customTexture = roadTrajectoryBitmap + optionTmp.add(coordinateConverterWgsToGcj(trajPointList[1], trajPointList[0])) + optionTmp.add(coordinateConverterWgsToGcj(trajectoryList[index + 1]!![1], + trajectoryList[index + 1]!![0])) + // 待绘制多段智慧道路的轨迹线 + roadTrajectoryOptionsList.add(optionTmp) + } + lastIndex = index + 1 + } else if (index == lastIndex) { + polylineOptionTmp?.add(coordinateConverterWgsToGcj(trajectoryList[index + 1]!![1], + trajectoryList[index + 1]!![0])) + lastIndex = index + 1 + } else if (index - lastIndex == 1) { + polylineOptionTmp?.add(coordinateConverterWgsToGcj(trajPointList[1], trajPointList[0])) + polylineOptionTmp?.add(coordinateConverterWgsToGcj(trajectoryList[index + 1]!![1], + trajectoryList[index + 1]!![0])) + lastIndex = index + 1 + } + } + } + } + } + } +// mAMap?.addMarkers(markerOptionsList2, false) + drawPolylineList(DRAW_ROAD_TRAJECTORY, roadTrajectoryOptionsList) + } + + private fun drawMarkers(type: Int, optionList: ArrayList) { + Message.obtain().apply { + what = type + obj = optionList + nonFrequentHandler?.sendMessage(this) + } + } + + private fun drawPolyline(type: Int, polylineOptions: PolylineOptions) { + Message.obtain().apply { + what = type + obj = polylineOptions + nonFrequentHandler?.sendMessage(this) + } + } + + private fun drawPolylineList(type: Int, polylineOptionsList: ArrayList) { + Message.obtain().apply { + what = type + obj = polylineOptionsList + nonFrequentHandler?.sendMessage(this) + } + } + + fun coordinateConverterWgsToGcj( + lat: Double, lon: Double + ): LatLng { + val coordinateConverter = + CoordinateConverter(context) + coordinateConverter.from(CoordinateConverter.CoordType.GPS) + coordinateConverter.coord(LatLng(lat, lon)) + return coordinateConverter.convert() + } + + override fun onChassisLocationGCJ02(mogoLocation: MogoLocation?) { + // TODO("绘制自车") + + } + + override fun onAutopilotRotting(globalPathResp: MessagePad.GlobalPathResp?) { + // 上一步调用处已经加锁,这里就不加了 + if (lastTime > 0 && System.currentTimeMillis() - lastTime <= 1000) { + return + } else { + lastTime = System.currentTimeMillis() + } + globalPathResp?.let { + + } + } + + private inner class NonFrequentHandler(looper: Looper) : Handler(looper) { + @Suppress("UNCHECKED_CAST") + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + when (msg.what) { + DRAW_POLY_LINE -> { + removeMessages(DRAW_POLY_LINE) + (msg.obj as PolylineOptions).apply { + realDrawGlobalPath(this) + } + } + + DRAW_ROAD_EVENT -> { + removeMessages(DRAW_ROAD_EVENT) + (msg.obj as ArrayList).apply { + realDrawEventMarkers(this) + } + } + + DRAW_CROSS_DEVICE -> { + removeMessages(DRAW_CROSS_DEVICE) + (msg.obj as ArrayList).apply { + realDrawCrossDeviceMarkers(this) + } + } + + DRAW_ROAD_RANGE -> { + removeMessages(DRAW_ROAD_RANGE) + (msg.obj as PolylineOptions).apply { + realDrawRoadRange(this) + } + } + + DRAW_ROAD_TRAJECTORY -> { + removeMessages(DRAW_ROAD_TRAJECTORY) + (msg.obj as ArrayList).apply { + realDrawRoadTrajectory(this) + } + } + } + } + } + + private fun realDrawGlobalPath(polylineOptions: PolylineOptions) { + mAMap?.addPolyline(polylineOptions) + } + + private fun realDrawEventMarkers(eventMarkerList: ArrayList) { + mAMap?.addMarkers(eventMarkerList, false) + Log.d(TAG, "计算到绘制事件耗时为:${System.currentTimeMillis() - testTime}") + } + + private fun realDrawCrossDeviceMarkers(eventMarkerList: ArrayList) { + mAMap?.addMarkers(eventMarkerList, false) + } + + private fun realDrawRoadRange(polylineOptions: PolylineOptions) { + mAMap?.addPolyline(polylineOptions) + } + + private fun realDrawRoadTrajectory(polylineOptionsList: ArrayList) { + polylineOptionsList.forEach { + mAMap?.addPolyline(it) + } + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/mogo_power_nor.png b/core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/mogo_power_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..b1ced222ee292f8a09ed24805ad6e2f46fc2f3ed GIT binary patch literal 680 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 JPDHLkV1gXS&HMlW literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/mogo_v2x_detail_bg.png b/core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/mogo_v2x_detail_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..b9ab8adac4274143257129f60776d2bc87d737cf GIT binary patch literal 57569 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

ws>5|L)eKp)AdIvWG?!@2(q1UYg|Cdr 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

xc82`=Kk#bbjM8u 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≰IF08X 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 literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/mogo_yongdu_nor.png b/core/function-impl/mogo-core-function-map/src/main/res/drawable-xhdpi/mogo_yongdu_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..4105161e2338a45a6598eac5f74524b7ad402ce8 GIT binary patch literal 3416 zcmV-e4X5&nP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91JD>vq1ONa40RR91I{*Lx02ysb2LJ#J!bwCyRA>d&nhA83)e*<%WhHw8 zL?jR)kO(Lc0#OJcqFAh2QLt1Ip)SXYXp2>kR-`V+rE1aRQhTgBF13gV+Pa`3dK4m% z$R>o%1PGc$FbUZq%j<8x#k{=a-j;TSj; z*7rKN20r3&I5hsFlOxzYSinZm?gV%YJQyAbhr^zzjEuc-0lXH@Wdf=QgGxaI3&>L$ z*-ZF1a6%VH*+Ts<;AQYT09Oghe}*xni9a74Sbr6T?^{1l*70s^Lh z!2EyoW#3E**71IGxT zhaU-arTqpA$P_w!06q&gsq&kAS-v1y%66Y%Cj})8>(L-*-?m9Ir=LuF@m8Cqgtr6u zJ%9V~3oJmh>EJmy+32YLNP(=p#UVwxL;da8ukuj|RWkjd?J_V&6<&l@_aB5009yCA zPvkRLfL=_C55eK$Y&j(F-gQv6tjzMMmtYl2NG+2&&weBEeMehOen@zouVU>LEFje; zE`qNyI%urjBTvmplc84u;k(5X4}s^i}YUk=~{-bT?WSb%E&Kj90E zh7K3y$@3Qvm!^gu-WvYV^Rq9@m#Md$L_bmR_we}u-bd(>yn(%unl~G@x4*ki-ulaU zk1hQi8U04>mAOme(b&h){cczRS9=;th^Guz^<469GV%-8=5{-vITswn zJ`sMBaeKtnVFndcJRXM~QuWvf)JR8|MP9jz%|z%AMaI?0jh{7%BSa4(O8|SDUELL|Iu93eG%J+F z;|B&^DMfHWal;ys&z}}qr|xwpE^T~Yk-0B&l>bO%_22EW`W{YQm@Cim(ukz9fP%T?kBKX}R!_Q-c;hN$ftzMjsv?#y` z_(Hp~t)TRFLHB2se7S6dof%N5;@EqzNc!mvmS#udX)1@|)vbO+q!&6wKJ}qY_2p)YWyNP^7W{X#c?O&re5`D=kGef!5wsF=mv;^=1nSfl&lVSr-YS;~l6r zucl?k`-tdtky0X=rEskmbC`qEDm+4E^@S$|?B z+iAd{Saee#U0HgEDocNGFpPI!9_9PF!oE}Fyt^oERgc7ZIDyshL}feK*SSpY0drz> zA{wgr9)K9945t?Fr(8Ik!J)4!8$UtqXJ#3n!VJNZL&zWLfS!}MT z;Tt;<@d(onCtz2#O;vVF0e;zwb}NB}PGGr^pDxglDW<}yuSDVO zLA%pzSfttDrsZhe{vzl6m9IDK$vta2@2KZM?C=s49@6m1qn(%amg{gZiv~3)SiQpm zcS6^|s`x6qlkUl_Z;9kwiA^o=4pi%x?-Tjz9b95t179gQd6AO<63&1xyM^u_a5srghoVt zPjxOz6f7-4amVA720(hVpdOEE)bIDT6;s`NdQ7wF@>l4#R^&VOv;t}5CPMA7);H`h zwpdR%#|=Su_O@$rBbF(mI>BF;F?EzFwJazHfffb3%V;$+Y5<-}gWtFP>efAw)jBZO zm`=pow{v>A2kWFO3Pr@=)Q>XbzCJfFNot4vrL=KYrzS>y$%7l=aPDrH@*q+R%{HK& z6{vbtD%Kqx={o9C?Q-c3Ge@OH&6mHFoRMl(S*KwL%d2i;zLA)DfvK5|mmodV?ka6~ z4O@GS$YW<>PM$E+I(im-z&G}3XyI8R@84&ZaCI#^s?$+g^5A0bwfb6FpKGXMtn?8) zPSSD)i6gWnxYsh4+c#t~TA6*SmuwXWOm8VdZM_?*ZB@rYJ*N}TaLe@L^|Wh?DXlBJ zj|DB%nl{)si7!Ol`XI_*$?ny|H8VJbcci5I)R(Nd|OE#$wgNWd3ZIm!qrAs zNiVzgbQBuSUOkARTSJRJfYtM@UehS)QPNkMydaNN9cLAP%(Yq@Fo2yx=F3Kbj~~vH zFP3!R?7CL(X7LFAt-5J#J-VkCBU{A+Ug0`IW6#^dE~s6KwI-AH&r2w4rujDa6K->tUzF z^v;x7Pi<&ZqdUH&j^1niOrqOTCG*LShS?6R76R}pf(MNX1IOja#ChEpa9p3mGUo-3 zRK|_VPD1@JN=;5X>JY4!qQc_@D~%eH=4Z)>X`79BcY4J1u8?^vxsP@5ol^*n|DiZm zbxduvv3n7;GiNSY0dvN}UTj&hp4-G6_i{hWd&-DHu5O|%|5pz(m#{#bG(1zMV6_^6 z69}G$Pt$k#Ztq5UepaTm9PRpH-)Jy^$EcZK$~lXMB7W*zAAzq1=;z*A@(NZP0B|V5 z-SCzA&PDi6?uO#|hd9M}|EV6K5sh-e{Tp3=<=acwa{;=~mm&BB)@}&Uvx(mi;|_5K z-k+BzD{dYZ@V~`&!(K!FR~$DdAKRaT*xD2PG1cY+w90FBtAJl%wGM#w`|YFf0DUK+ zMs~cnRo=Zji)$A14%)~F(nI}pbzdW+(ybPCf2wI&3{W5Z&en1G4OXiHIFjIxu-apD z?>bw`<-o>W^2w9Q#&33H1WZxf3g%o{AXyhBNo4F0mv+_?UkJ!OE@?hT0|INe4ro>R z^Wn?j)>Un3D&?a5fb2rj4&){Ahk1&}pU2cg>y=g_eNR3tL(i(?J5f*mn$cAZgKb(z zqJL0w~>)>6z*s|(v0UiUZLh+>^RWt>#imI;UMnLNR3>x_|h%R*ocopw7 u_;@%LR@ + + + + \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-map/src/main/res/values/attrs.xml b/core/function-impl/mogo-core-function-map/src/main/res/values/attrs.xml index d70e4a35f8..4030c0316e 100644 --- a/core/function-impl/mogo-core-function-map/src/main/res/values/attrs.xml +++ b/core/function-impl/mogo-core-function-map/src/main/res/values/attrs.xml @@ -1,17 +1,35 @@ + + + + + + + + + + + + + + + + + + - - + + - + - + - + - + @@ -25,11 +43,31 @@ - - - - + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/mogo-core-res/src/main/res/drawable-xhdpi/mogo_jingzhi_nor.png b/core/mogo-core-res/src/main/res/drawable-xhdpi/mogo_jingzhi_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..6d0901977c09bd7922d5cef9952149ae7381d1dd GIT binary patch literal 2539 zcmVPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91ET97b1ONa40RR91EC2ui0Q_#}qW}O2RY^oaR9FekSq)HB*A;&6?c2Az zunWlV>f!>jL`6g?O4QoX)Fc{hZD-nXrkX0oe;boFwqp~U*0D~LF=Jz!F=|qk$#k5i ziNDhrv{R!=1r@Z4@dr@^7Er+DcNg~O?R)*s?mh<4Wmm+X!+d-0yZ4-Xzdd{2x%WL- zW)MV{1uz0h0j-8^1R8)lz-{0H%d#Hm0Sh}2PY~qcHwl;p%mhq8IAVv z$$9lEr9#-k#m2S9Em(9tVd?TH)(}mpL{Z)bd<^2wP!okD45B(r@;)$^k!5?^;r(T| z*Z(HR+u23^4<)hl7oIo%VN*P-R+}+VC9n{rNe7jF34`oVcoqO-U6nUVE9d>#A~oA$ zg3dO80anF}#tj=wVizo)0QW9n1xTL^HdRo`~{eLg0Sde)`nNhRvJGFqRBZDeac- zlmJ=!Mqi(?FKU)va6{ z5#YFwKPkf#ygVicFQytu2_zJ zU81pMOoaUp5ashkl!Oj4No@!A6@%<#U(WzPw4*cm_*Jjz)rpCmEP5I2Vk{%584enO zVVo5eqS$c9Yumlk;caS?LM>Cfc1?Wxp+Yj73v?5vn~kyU-ad@bTLi#xa(N8KpZzHIXsh2T@QMY>AO-~{*nm$ z$>Xm6$dZqzuFmVcdc~v5&Y?4NNO7D!TLU9AexcDEKIp_`q9bBR&;ATpj)|Q9oVNAg z0Xh$al=goYIt_E?XhRyp;O?%S%K2pmML3n59REET*0&{F63v(~>hz*BNu=pIA}>#n z9Cq1t>0($<6wV75Ji445fqX+rXUS>h2%APXT@pFCs;a1jge~!}|H{BeM{|j4W5X_-(zjpk1b;RV!8cFst+9{K?bZtLz z!sWhoQxq&2Y9Yg-W~g`twj~w~8Gocns9K;z`LyAsSvny#g|C_S)4RUGARn?Q+E8(f zloCd=@jccAG49(P|BE#SMwS@s!bLVll9>3_ull}hbHQ#0^)nI*grd=wBm^&@eQk^> z+G}r@8#Zoe>$^tZYi~yfJ((mCVSoAIxR5oGCeh|j5VR9>H8P^>F2ClHK}3_6tD%1T z7e~5WwbfoZK!`Mf$Sa!K-u5=BW#`V0%I`ndK>n_8zYU%DoNrh565%^UL`Y7ykq#xX zt5+I`EOtdk6%&mrX&9W+O}=8OKx{}+JstH6{(Mc zO#|gHy*pskX0si2n3_Q)V$!pMc6_$rj~Mb0H=WYf<%|<(yyM`Z&X`y7^?YKY3W@5U z3pwj+L(|P^`p4fBr(9k5k2_47%IDn8ZBvnqTeNeX$kP(?*|fEzvZHW1;P zMAR^S24)W~x~Wq%nygGj*H40U{JOQ#{u|8SN8`FFlQkWO|JCIxEp>?~Yhr7w8tricP`!E)%%mx3asyD3Um{}gm*T^`g7RdNqvk)2$_?PqSG!uGgDxB z73;ci(bapUK35zk>&EA%q4zq1d&@UDB1Z274tE^=vZ!X&D^vQoJkd-2r0+JyFB9et4M%o(74W z{`^&bsEOW*><7nd#Hl;qkQUTF0*tDdme=aGT78EiGI~;yS$6#zt2d0m`cpx;mUt*B zL5C3v`zAn>_W2hLtV-2ynIq>%DMSDGr(%$$v-%!|EUni~m@Y7I3Th9ZkdU4F$){(j z?@37XoFA3pJe&5}q0{spm&P8I3|YMNT-rYmCF3O^oyt~&L-GCAx+f)i8X-N%c_%PU zwAn6K&HqW1tD<~(Pn(BrbCCwe@a-R$>8DPk_aV1|e2~2qY~FqelM_hOJGb8h%K)+K zd`W4|s%05sQ$w$}iWqw!;Z$l*;+t=ui_Kp$lEsrAoJ#?EC+s`!2AeD-VZ{-|seu0u zn2dI3SLvCuy9IyK+m9U`C3{8XOrn?v)tWKcRrrTYebnq9rr?Zgf?*x78Q2H1{?k=Z z?;aaRKQ_IFK=yfb{1(Uz479s$RFpePPm6e3_WkS2ZN&qv)5QyBbDNNw)+w0N+`6nR zS(iJ}93V-q^n~*vup31CKLC++K*El&;-F{{x1c=}m<40eO0SF$1)n8-YZC$`j>dLjd(4Xhr*>$q|V>3jeH002ovPDHLkV1iIW Bzm@<1 literal 0 HcmV?d00001 diff --git a/core/mogo-core-res/src/main/res/drawable-xhdpi/mogo_quanxi_lukou.png b/core/mogo-core-res/src/main/res/drawable-xhdpi/mogo_quanxi_lukou.png new file mode 100644 index 0000000000000000000000000000000000000000..338cf614d0cb42d81891f8c5e2158c3d9f57d91d GIT binary patch literal 3312 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 z zpj=!mfO4S$Sgrsq1XuC>l=Am=4Nn`Xx%EC&I-NE7CB%Fwt?HYtk$A};e!qJXNtM5)lm5G5y#rU`7Ylg9A5eooDHx( z?R$T3mX|Ys7@7pOvNh6qN3Oy+=!RBvXeG{mZXbZAV}1;jm+h3MfTGR)$4AaLNqED& z7gmGgz;%fD{|}!yu1#3q$E?_#P2I5NfWBAX0dn&Jqz?gTsSj~?mEUFTmO=)A+ag&5 zz8*}~yLaTAo}Aq?P%Df3v;-l7@k{E5pO@k;mF5AR>{9VRRBcz%A23)}1i*SE_*6%? zOJ#ijEM2~===^I-dSC57nyAbX7n7E*{5E{Zu$~y3%~;--3jp#>o=YGU6j)XWz}#mF zn4L^5nE3E2p8IS?#pVs(u@x3*1|jHHj~Ld$==&b*ibF&g416<82hi=os16#eP!7-> z?qF+csJpJVwxE2|`=uo-mUU_Fe=@Y0-HQ^Qe&#H~t7!_QlFtezUaD_{mjGxDR|G>L zgB61SbU);$fo~CYNF9#q>OxEIz6(`fY|~i|=f&Cz^4s7`fZNORkVW{^XhGDX*wA-i zxq0Mhr><*8vLZ~A;?qWN>z*hlqt<&z{ z=)8i$)HCvjp!u4lc9t@-x6$kX|+VKTz&1 U-`|nw`Tzg`07*qoM6N<$g6JNJcmMzZ literal 0 HcmV?d00001 diff --git a/core/mogo-core-res/src/main/res/drawable-xhdpi/mogo_shigu_nor.png b/core/mogo-core-res/src/main/res/drawable-xhdpi/mogo_shigu_nor.png new file mode 100644 index 0000000000000000000000000000000000000000..bf0654c7ec95c220048f2d968cc141b7abef9bfd GIT binary patch literal 3200 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 mLWeH+Dge6Ir3>x5D*p$n(FFZaOY)BZ0000 - * ( 单位:米 ) + * ( 单位:米 ) + * * @param x1 * @param y1 * @param x2 @@ -44,7 +48,7 @@ public class LocationUtils { * @param y0 * @return */ - public static double pointToLine( double x1, double y1, double x2, double y2, double x0, double y0 ) { + public static double pointToLine(double x1, double y1, double x2, double y2, double x0, double y0) { double space; double a, b, c; a = getDistance(y1, x1, y2, x2);// 线段的长度 @@ -73,4 +77,103 @@ public class LocationUtils { space = 2 * s / a;// 返回点到线的距离(利用三角形面积公式求高) return space; } + + /** + * 计算向量的点积 + * + * @param xa + * @param ya + * @param xb + * @param yb + * @return + */ + private static double dotProduct(double xa, double ya, double xb, double yb) { + return xa * xb + ya * yb; + } + + /** + * 计算向量的模长 + * @param xa + * @param ya + * @return + */ + private static double magnitude(double xa, double ya) { + return Math.sqrt(xa * xa + ya * ya); + } + + /** + * 计算点p到点a和点b组成的线段的垂足 + * + * @param xp + * @param yp + * @param xa + * @param ya + * @param xb + * @param yb + * @return 垂足 + */ + public static Pair footPoint(double xp, double yp, double xa, double ya, double xb, double yb) { + // 计算线段的向量v,即b - a + double xv = xb - xa; + double yv = yb - ya; + // 计算点p相对于线段起点a的向量w,即p - a + double xw = xp - xa; + double yw = yp - ya; + + double c1 = dotProduct(xw, yw, xv, yv); + double c2 = dotProduct(xv, yv, xv, yv); + double t = c1 / c2; + if (t < 0) { + t = 0; + } else if (t > 1) { + t = 1; + } + return new Pair<>(xa + t * xv, ya + t * yv); + } + + /** + * 计算a-b线段和c-d线段之间的夹角 + * @param xa + * @param ya + * @param xb + * @param yb + * @param xc + * @param yc + * @param xd + * @param yd + * @return + */ + public static double angleBetweenLineSegments(double xa, double ya, double xb, double yb, double xc, double yc, double xd, double yd) { + double xv = xb - xa; + double yv = yb - ya; + + double xw = xd - xc; + double yw = yd - yc; + + double dot = dotProduct(xv, yv, xw, yw); + double mag1 = magnitude(xv, yv); + double mag2 = magnitude(xw, yw); + double cosTheta = dot / (mag1 * mag2); + // 由于反余弦函数的取值范围,需要对结果进行调整 + if (cosTheta > 1) { + cosTheta = 1; + } else if (cosTheta < -1) { + cosTheta = -1; + } + double angleInRadians = Math.acos(cosTheta); + return Math.toDegrees(angleInRadians); + } + + /** + * 逆时针旋转到90度(和地图坐标系正北为0顺指针的方向相反) + * @param angle + * @return + */ + public static double rotateTo90(double angle) { + double difference = angle - 90; + if (difference < 0) { + difference += 360; + } + return difference; + } }