Commit 05725fa8 authored by p x's avatar p x
Browse files

加载高精地图

parent fc1586ea
......@@ -24,4 +24,5 @@ android.nonTransitiveRClass=true
#android.defaults.buildfeatures.databinding=true
#????gradle??????????DGP v2:
org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled
org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true
\ No newline at end of file
org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true
unityStreamingAssets=.unity3d, google-services-desktop.json, google-services.json, GoogleService-Info.plist
\ No newline at end of file
......@@ -4,6 +4,8 @@ plugins {
id("kotlin-kapt")
// kotlin("jvm") version "2.1.10"
id("kotlin-parcelize")
id("maven-publish")
// id ("org.jreleaser") version "1.20.0"//JReleaser now has support for publishing via the Central Publisher Portal and can be used via their Gradle plugin integration.
id("org.jetbrains.dokka") version "2.0.0"
}
......@@ -39,36 +41,11 @@ android {
// dataBinding = true
viewBinding = true
}
// dokka {
// outputFormat = 'javadoc'
// outputDirectory = "$buildDir/dokka"
// configuration {
// // Do not output deprecated members
// skipDeprecated = true
// // Emit warnings about not documented members.
// reportUndocumented = true
// // Do not create index pages for empty packages
// skipEmptyPackages = true
//
// noJdkLink = true
// noStdlibLink = true
// noAndroidSdkLink = true
// }
// }
}
//repositories {
// flatDir {
// dirs("libs") // aar目录
// }
//}
dependencies {
api(fileTree(mapOf("dir" to "libs","include" to listOf("*.jar", "*.aar"))))
api(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar"))))
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.material)
......@@ -77,11 +54,10 @@ dependencies {
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
//文档插件库
// Is applied universally
// dokkaPlugin("org.jetbrains.dokka:mathjax-plugin:2.0.0")
// Is applied for the single-module dokkaHtml task only
// dokkaHtmlPlugin("org.jetbrains.dokka:kotlin-as-java-plugin:2.0.0")
//四维高精地图依赖
// implementation("daohang.tingche.unityLibrary:adas:1.0")
//高德
// implementation("com.amap.api:navi-3dmap:latest.integration")
// implementation("com.amap.api:search:latest.integration")
......@@ -94,6 +70,56 @@ dependencies {
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2")
//fragment-ktx
implementation("androidx.fragment:fragment-ktx:1.8.0")
}
//group = "msmap"
//version = "1.0"
afterEvaluate {
publishing {
publications {
create<MavenPublication>("myLibrary") {
groupId = "com.sd.maplibrary"
artifactId = "maplibrary"
version = "1.0.0"
from(components["release"])
artifact(tasks.getByName("debugSourcesJar"))
pom {
name.set("MapLibrary")
description.set("MapLibrary")
url.set("https://github.com/sd-map/MapLibrary")
licenses {
license {
name.set("The Apache License, Version 2.0")
url.set("http://www.apache.org/licenses/LICENSE-2.0.txt")
}
}
developers {
developer {
id.set("Tom")
name.set("ltzw")
email.set("ltzw@qq.com")
}
}
scm {
connection.set("scm:git:https://github.com/sd-map/MapLibrary.git")
developerConnection.set("scm:git:https://github.com/sd-map/MapLibrary.git")
url.set("https://github.com/sd-map/MapLibrary")
}
}
}
// register<MavenPublication>("release") {
// groupId = "com.sd.maplibrary"
// artifactId = "maplibrary"
// version = "1.0.0"
// from(components["release"])
// }
}
}
}
\ No newline at end of file
......@@ -29,12 +29,12 @@
<application>
<!-- android:supportsRtl="true"> -->
<meta-data
android:name="com.minedata.minenavi.apikey"
android:value="57ac7a0d56494912a0c28e651fa4a40a" />
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="3b7d009011b97dcc3815a93e8ddfcd77" />
<!-- <meta-data-->
<!-- android:name="com.minedata.minenavi.apikey"-->
<!-- android:value="57ac7a0d56494912a0c28e651fa4a40a" />-->
<!-- <meta-data-->
<!-- android:name="com.amap.api.v2.apikey"-->
<!-- android:value="3b7d009011b97dcc3815a93e8ddfcd77" />-->
<uses-library
android:name="org.apache.http.legacy"
......
......@@ -12,12 +12,11 @@ class DriverRouteBean {
val instance: DriverRouteBean by lazy { DriverRouteBean() }
}
/**四维路径规划返回*/
var routeCollection: RouteCollection? = null
/****四维某条具体路径用于返回**/
var routeBase: RouteBase? = null
//高德
var aMapCalcRouteResult: AMapCalcRouteResult?=null
// var driveRouteResult: DriveRouteResult? = null
}
/**
......
......@@ -29,6 +29,7 @@ import com.sd.maplibrary.UserCtx
import com.sd.maplibrary.bean.DriverRouteBean
import com.sd.maplibrary.bean.MSLatLng
import com.sd.maplibrary.bean.WayPoi
import com.sd.maplibrary.core.basic.OnDriveRoute
import com.sd.maplibrary.intfaces.MyAMapNaviListener
import com.sd.maplibrary.intfaces.MyMineNaviListener
import com.sd.maplibrary.utils.DisplayUtil
......@@ -199,9 +200,9 @@ private object MSRoutePlans {
}
/**自定义驾车路线返回*/
interface OnDriveRoute {
/* interface OnDriveRoute {
fun onDriverRoute(driverRouteBean: DriverRouteBean)
}
}*/
/**
......@@ -223,7 +224,7 @@ private object MSRoutePlans {
}
// 获取第一条路线数据并设置路线绘制选项
var routeBase = driverRB.routeCollection?.routes?.get(0)
var routeBase = driverRB.routeBase
val options = RouteOptions()
.routeBase(routeBase)
.colorType(Route.RouteColorType.enrouteTi)
......@@ -331,7 +332,7 @@ private object MSRoutePlans {
override fun onCalculateRouteSuccess(data: RouteCollection) {
// 路线规划成功
driverRouteBean.routeCollection = data
driverRouteBean.routeBase = data.routes.get(0)
onDriveRoute?.onDriverRoute(driverRouteBean)
}
......
package com.sd.maplibrary.core.basic
import com.sd.maplibrary.bean.DriverRouteBean
/**驾车路线返回*/
interface OnDriveRoute {
fun onDriverRoute(driverRouteBean: DriverRouteBean)
}
\ No newline at end of file
......@@ -8,9 +8,11 @@ import com.amap.api.navi.model.AMapNaviPath
import com.amap.api.navi.model.NaviLatLng
import com.amap.api.navi.view.RouteOverLay
import com.sd.maplibrary.UserCtx
import com.sd.maplibrary.bean.DriverRouteBean
import com.sd.maplibrary.bean.MSLatLng
import com.sd.maplibrary.bean.WayPoi
import com.sd.maplibrary.core.MapReadyView
import com.sd.maplibrary.core.basic.OnDriveRoute
import com.sd.maplibrary.intfaces.MyAMapNaviListener
import com.amap.api.maps.model.LatLng as ALatLng
......@@ -22,13 +24,18 @@ class AmapRoutePlans {
val instance: AmapRoutePlans by lazy { AmapRoutePlans() }
}
//驾车算路回调对象
private var driverRouteBean = DriverRouteBean.instance
//驾车路径规划回调接口
private var onDriveRoute: OnDriveRoute? = null
//初始化高德 导航 对象
private var mAMapNavi: AMapNavi? = null
//高德保存当前算好的路线
private var routeOverlay: RouteOverLay? = null
// private val routeOverlays: SparseArray<RouteOverLay> = SparseArray<RouteOverLay>()
private var mapReadView: MapReadyView? = null
......@@ -47,8 +54,11 @@ class AmapRoutePlans {
endName: String = "",
ways: List<WayPoi>,
mapReadView: MapReadyView?,
onDriveRoute: OnDriveRoute?
) {
this.onDriveRoute = onDriveRoute
this.mapReadView = mapReadView
var context = UserCtx.instance.mContext
mAMapNavi = AMapNavi.getInstance(context)
mAMapNavi!!.addAMapNaviListener(aMapNaviListener)
......@@ -81,7 +91,7 @@ class AmapRoutePlans {
wayPoints.add(NaviLatLng(wpoi.passPoint!!.lat, wpoi.passPoint!!.lng))
}
}
var strategy = mAMapNavi?.strategyConvert(true, false, false, false, false)?:0;
var strategy = mAMapNavi?.strategyConvert(true, false, false, false, false) ?: 0;
mAMapNavi?.calculateDriveRoute(
startList,
......@@ -143,6 +153,9 @@ class AmapRoutePlans {
// 路线规划成功
println("----------onCalculateRouteSuccess")
drawPlanPath(aMapCalcRouteResult)
driverRouteBean.aMapCalcRouteResult = aMapCalcRouteResult
onDriveRoute?.onDriverRoute(driverRouteBean)
// mAMapNavi?.startNavi(NaviType.EMULATOR);
}
......
......@@ -7,11 +7,13 @@ import com.minedata.minenavi.map.Model
import com.minedata.minenavi.map.ModelOptions
import com.minedata.minenavi.map.Overlay
import com.minedata.minenavi.mapdal.DataPreference
import com.minedata.minenavi.mapdal.LatLng
import com.minedata.minenavi.navi.GuidanceText
import com.minedata.minenavi.navi.NaviProgressData
import com.minedata.minenavi.navi.NaviSession
import com.minedata.minenavi.navi.NaviSessionData
import com.minedata.minenavi.navi.NaviSessionParams
import com.minedata.minenavi.navi.RouteBase
import com.minedata.minenavi.navi.SmoothNaviData
import com.minedata.minenavi.navi.TmcSections
import com.minedata.minenavi.util.Tools
......@@ -38,10 +40,7 @@ object MineNai {
/**四维导航监听回调***/
var onNaviPresenterListener: OnNaviPresenterListener? = null
/**
* 开启四维导航 客户端自实现数据回调
*/
fun startNavi(mapReadView: MapReadyView?) {
init {
mNaviSession = NaviSession.getInstance()
mNaviSession?.enableSound(true)
var naviSessionParams = NaviSessionParams().apply {
......@@ -52,8 +51,14 @@ object MineNai {
var context = UserCtx.instance.mContext
mNaviSession!!.init(context, naviSessionParams)
mNaviSession?.setDataPreference(DataPreference.preferOnline)
mNaviSession?.addMineNaviListener(myMineNaviListener)
}
/**
* 开启四维导航 客户端自实现数据回调
*/
fun startNavi(mapReadView: MapReadyView?) {
mNaviSession?.addMineNaviListener(myMineNaviListener)
var mRouteBas = MineRoutePlans.mRouteBase
if (mRouteBas != null) {
mMineMap = mapReadView?.mMineMap
......@@ -80,6 +85,28 @@ object MineNai {
context?.startActivity(inten)
}
//是否正在导航
private var mIsInNavigation = false
/**
* 直接使用RouteBase开启导航
*/
fun startNaviFormRouteBase(routeBase: RouteBase?,mStartPoint:MSLatLng) {
// mMineMap = mapReadView?.mMineMap
if (routeBase == null)
return
mNaviSession?.addMineNaviListener(myMineNaviListener)
val starPoint = Tools.latLngToPoint(LatLng(mStartPoint.lat, mStartPoint.lng))
drawNavingCar(starPoint)
mIsInNavigation=true
mNaviSession?.takeRoute(routeBase)
}
fun stopNavi() {
mIsInNavigation=false
mNaviSession?.removeRoute()
}
/**
* 添加导航小车
*/
......@@ -118,8 +145,8 @@ object MineNai {
*/
private var myMineNaviListener = object : MyMineNaviListener() {
override fun onTracking(data: NaviSessionData) {
super.onTracking(data)
onNaviPresenterListener?.onTracking(data)
// super.onTracking(data)
onNaviPresenterListener?.onTracking(data.travelledDistance.toFloat() / data.routeLength)
}
override fun onSmoothTracking(data: SmoothNaviData) {
......
......@@ -15,9 +15,11 @@ import com.minedata.minenavi.navi.RoutePlan
import com.minedata.minenavi.navi.RouterErrorInfo
import com.minedata.minenavi.util.Tools
import com.sd.maplibrary.UserCtx
import com.sd.maplibrary.bean.DriverRouteBean
import com.sd.maplibrary.bean.MSLatLng
import com.sd.maplibrary.bean.WayPoi
import com.sd.maplibrary.core.MapReadyView
import com.sd.maplibrary.core.basic.OnDriveRoute
import com.sd.maplibrary.intfaces.MyMineNaviListener
import com.sd.maplibrary.utils.DisplayUtil
......@@ -29,10 +31,10 @@ object MineRoutePlans {
private var mNaviSession: NaviSession? = null
//驾车算路回调对象
// private var driverRouteBean = DriverRouteBean.instance
private var driverRouteBean = DriverRouteBean.instance
//驾车路径规划回调接口
// private var onDriveRoute: OnDriveRoute? = null
private var onDriveRoute: OnDriveRoute? = null
/**
* 路线图层
......@@ -49,7 +51,6 @@ object MineRoutePlans {
/** 路径规划起点*/
var mStartPoint: Point = Point()
/**驾车路径规划
* @param starPoint 起点坐标
* @param startName 起点名称
......@@ -66,9 +67,9 @@ object MineRoutePlans {
endName: String = "",
ways: List<WayPoi>,
mapReadView: MapReadyView?,
// onDriveRoute: MineRoutePlans.OnDriveRoute
onDriveRoute: OnDriveRoute?
) {
// this.onDriveRoute = onDriveRoute
this.onDriveRoute = onDriveRoute
this.mapReadView = mapReadView
// var context = UserCtx.instance.mContext
......@@ -200,7 +201,8 @@ object MineRoutePlans {
// 获取单条道路信息
mRouteBase = data.routes.get(0)
drawPlanPath(mRouteBase)
// onDriveRoute?.onDriverRoute(mRouteBase)
driverRouteBean.routeBase=mRouteBase
onDriveRoute?.onDriverRoute(driverRouteBean)
}
override fun onCalculateRouteFailed(data: RouterErrorInfo) {
......
......@@ -5,6 +5,7 @@ import com.sd.maplibrary.bean.WayPoi
import com.sd.maplibrary.core.MapReadyView
import com.sd.maplibrary.core.basic.MSMarker
import com.sd.maplibrary.core.basic.MSOverlay
import com.sd.maplibrary.core.basic.OnDriveRoute
import com.sd.maplibrary.core.basic.OnMSPoiSearchLis
import com.sd.maplibrary.core.basic.OnMsGpsLoc
......@@ -134,9 +135,10 @@ abstract class AbsMapCore : IMapBasic, IMapBusin {
endPoint: MSLatLng,
endName: String,
ways: List<WayPoi>,
mapReadView: MapReadyView?
mapReadView: MapReadyView?,
onDriveRoute: OnDriveRoute?
) {
iMapBasic.drivingPathPlanning(starPoint, startName, endPoint, endName, ways, mapReadView)
iMapBasic.drivingPathPlanning(starPoint, startName, endPoint, endName, ways, mapReadView,onDriveRoute)
}
......
......@@ -5,6 +5,7 @@ import com.sd.maplibrary.bean.WayPoi
import com.sd.maplibrary.core.MapReadyView
import com.sd.maplibrary.core.basic.MSMarker
import com.sd.maplibrary.core.basic.MSOverlay
import com.sd.maplibrary.core.basic.OnDriveRoute
import com.sd.maplibrary.core.basic.OnMSPoiSearchLis
import com.sd.maplibrary.core.basic.OnMsGpsLoc
import com.sd.maplibrary.core.basic.amap.AmapDrawInMap
......@@ -152,7 +153,8 @@ class AmapBasic : IMapBasic {
endPoint: MSLatLng,
endName: String,
ways: List<WayPoi>,
mapReadView: MapReadyView?
mapReadView: MapReadyView?,
onDriveRoute: OnDriveRoute?
) {
AmapRoutePlans.instance.drivingPathPlanning(
starPoint,
......@@ -160,7 +162,8 @@ class AmapBasic : IMapBasic {
endPoint,
endName,
ways,
mapReadView
mapReadView,
onDriveRoute
)
}
......
......@@ -7,6 +7,7 @@ import com.sd.maplibrary.core.MapReadyView
import com.sd.maplibrary.core.basic.MSLocStyle
import com.sd.maplibrary.core.basic.MSMarker
import com.sd.maplibrary.core.basic.MSOverlay
import com.sd.maplibrary.core.basic.OnDriveRoute
import com.sd.maplibrary.core.basic.OnMSPoiSearchLis
import com.sd.maplibrary.core.basic.OnMsGpsLoc
......@@ -193,8 +194,8 @@ interface IMapBasic {
endPoint: MSLatLng,
endName: String = "",
ways: List<WayPoi>,
mapReadView: MapReadyView?
// onDriveRoute: OnDriveRoute
mapReadView: MapReadyView?,
onDriveRoute: OnDriveRoute?
)
/**
......
......@@ -5,6 +5,7 @@ import com.sd.maplibrary.bean.WayPoi
import com.sd.maplibrary.core.MapReadyView
import com.sd.maplibrary.core.basic.MSMarker
import com.sd.maplibrary.core.basic.MSOverlay
import com.sd.maplibrary.core.basic.OnDriveRoute
import com.sd.maplibrary.core.basic.OnMSPoiSearchLis
import com.sd.maplibrary.core.basic.OnMsGpsLoc
import com.sd.maplibrary.core.basic.mine.MimeGestures
......@@ -153,7 +154,8 @@ class MineBasic : IMapBasic {
endPoint: MSLatLng,
endName: String,
ways: List<WayPoi>,
mapReadView: MapReadyView?
mapReadView: MapReadyView?,
onDriveRoute: OnDriveRoute?
) {
MineRoutePlans.drivingPathPlanning(
starPoint,
......@@ -161,7 +163,8 @@ class MineBasic : IMapBasic {
endPoint,
endName,
ways,
mapReadView
mapReadView,
onDriveRoute
)
}
......
package com.ltzw.adasdriver.ui.fragment
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import androidx.fragment.app.Fragment
import com.unity3d.player.IUnityPlayerLifecycleEvents
import com.unity3d.player.UnityPlayer
/**
*四维高精地图
*/
class UnityFragment : Fragment(), IUnityPlayerLifecycleEvents {
// region Lifecycle Management - MUST BE FORWARDED TO UnityPlayer
override fun onResume() {
super.onResume()
mUnityPlayer.onResume()
}
override fun onStart() {
super.onStart()
mUnityPlayer.onStart()
}
override fun onPause() {
super.onPause()
mUnityPlayer.onPause()
}
override fun onStop() {
super.onStop()
mUnityPlayer.onStop()
}
// override fun onDestroyView() {
// super.onDestroyView()
// mUnityPlayer.destroy()
// }
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// 创建一个简单的 FrameLayout 作为 Fragment 的根视图
val frameLayout = FrameLayout(requireContext())
frameLayout.layoutParams = ViewGroup.LayoutParams(-1, -1)
// // 将 UnityPlayer 的视图添加到 FrameLayout 中
mUnityPlayer.let { unityPlayer ->
// val playerView = unityPlayer
val layoutParams = ViewGroup.LayoutParams(-1, -1)
frameLayout.addView(unityPlayer, layoutParams)
}
return frameLayout
// return inflater.inflate(R.layout.fragment_unity, container, false)
}
override fun onUnityPlayerUnloaded() {
Log.d("UnityFragment", "-----------------onUnityPlayerUnloaded")
// Unity 玩家未加载时调用
}
override fun onUnityPlayerQuitted() {
Log.d("UnityFragment", "-----------------onUnityPlayerQuitted")
}
// UnityPlayer 实例
private lateinit var mUnityPlayer: UnityPlayer
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mUnityPlayer = UnityPlayer(requireContext(), this)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
// 视图创建完成后,可以在这里进行最终设置
mUnityPlayer.windowFocusChanged(true)
// mUnityPlayer.requestFocus()
}
// 可选:向 Unity 发送消息的方法
fun sendMessageToUnity(gameObjectName: String, methodName: String, message: String) {
// mUnityPlayer?.sendMessage(gameObjectName, methodName, message)
// UnityPlayer.UnitySendMessage()
}
companion object {
@JvmStatic
fun newInstance() = UnityFragment()
}
}
\ No newline at end of file
......@@ -13,7 +13,7 @@ import com.minedata.minenavi.navi.TmcSections
*/
interface OnNaviPresenterListener {
fun onTracking(data: NaviSessionData)
fun onTracking(ratio: Float)
fun onSmoothTracking(data: SmoothNaviData)
......
......@@ -7,6 +7,7 @@ import android.widget.LinearLayout
import androidx.core.content.withStyledAttributes
import androidx.fragment.app.FragmentActivity
import com.amap.api.maps.AMap
import com.ltzw.adasdriver.ui.fragment.UnityFragment
import com.minedata.minenavi.map.MineMap
import com.sd.maplibrary.MAP_TYPE
import com.sd.maplibrary.MSDKInitializer
......@@ -41,22 +42,28 @@ class MapMultiView : LinearLayout {
private lateinit var binding: MultiViewBinding
//四维地图
//四维在线地图
private val foreMapFragment by lazy { ForeMapFragment.newInstance() }
//四维高精地图
private val unityFragment by lazy { UnityFragment.newInstance() }
//高德地图
private val aMapFragment by lazy { AMapFragment.newInstance() }
private var enmuValue = -1
//地图类型
private var mapType = -1
private fun init(attrs: AttributeSet?, defStyle: Int) {
// context.withStyledAttributes(attrs, R.styleable.MapMultiView, defStyle, 0) {
// if (hasValue(R.styleable.MapMultiView_map_type)) {
// enmuValue = getInt(R.styleable.MapMultiView_map_type, -1)
// }
// }
enmuValue = MSDKInitializer.getMapType().ordinal
//地图子类型(高精或局部)
private var childType = -1
private fun init(attrs: AttributeSet?, defStyle: Int) {
context.withStyledAttributes(attrs, R.styleable.MapMultiView, defStyle, 0) {
if (hasValue(R.styleable.MapMultiView_map_child_type)) {
childType = getInt(R.styleable.MapMultiView_map_child_type, -1)
}
}
mapType = MSDKInitializer.getMapType().ordinal
// println("------------MapMultiView = ${MSDKInitializer.getMapType().ordinal}")
// println("------------enmuValue = $enmuValue")
binding = MultiViewBinding.inflate(LayoutInflater.from(context))
......@@ -65,14 +72,28 @@ class MapMultiView : LinearLayout {
}
fun loadMapFrament() {
private fun loadMapFrament() {
if (context is FragmentActivity) {
var act = context as FragmentActivity
var ft = act.supportFragmentManager.beginTransaction()
if (enmuValue == MAP_TYPE.MINE.ordinal) {
ft.replace(R.id.frame_layout, foreMapFragment)
} else if (enmuValue == MAP_TYPE.AMAP.ordinal) {
ft.replace(R.id.frame_layout, aMapFragment)
if (mapType == MAP_TYPE.MINE.ordinal) {//四维地图
if (childType == -1) {
ft.replace(R.id.frame_layout, foreMapFragment)
} else if (childType == 1) {//高精
ft.replace(R.id.frame_layout, unityFragment)
} else if (childType == 2) {//局部
}
} else if (mapType == MAP_TYPE.AMAP.ordinal) {
if (childType == -1) {
ft.replace(R.id.frame_layout, aMapFragment)
} else if (childType == 1) {//高精
} else if (childType == 2) {//局部
}else {
ft.replace(R.id.frame_layout, aMapFragment)
}
}
ft.commit()
}
......@@ -81,22 +102,22 @@ class MapMultiView : LinearLayout {
/**地图加载监听回调*/
fun addMapRenderCallback(onMapReadyLis: OnMapReadyLis) {
if (enmuValue == 0) {
if (mapType == 0) {
foreMapFragment.addMapRenderCallback(onMapReadyLis)
} else if (enmuValue == 1) {
} else if (mapType == 1) {
aMapFragment.addMapRenderCallback(onMapReadyLis)
}
}
/**获取 mMineMap 或者 aMap ***/
fun getAnyMap(): Any? {
if (enmuValue == 0) {
return foreMapFragment.getAnyMap() as MineMap
} else if (enmuValue == 1) {
return aMapFragment.getAnyMap() as AMap
}
return null
}
// /**获取 mMineMap 或者 aMap ***/
// fun getAnyMap(): Any? {
// if (mapType == 0) {
// return foreMapFragment.getAnyMap() as MineMap
// } else if (mapType == 1) {
// return aMapFragment.getAnyMap() as AMap
// }
// return null
// }
}
......
......@@ -3,24 +3,34 @@ package com.sd.maplibrary.ui
import android.os.Bundle
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.sd.maplibrary.R
import com.minedata.minenavi.navi.GuidanceText
import com.minedata.minenavi.navi.NaviProgressData
import com.minedata.minenavi.navi.NaviSessionData
import com.minedata.minenavi.navi.SmoothNaviData
import com.minedata.minenavi.navi.TmcSections
import com.sd.maplibrary.bean.DriverRouteBean
import com.sd.maplibrary.core.MapReadyView
import com.sd.maplibrary.core.basic.OnDriveRoute
import com.sd.maplibrary.core.basic.mine.MineNai
import com.sd.maplibrary.core.basic.mine.MineNaiParams
import com.sd.maplibrary.databinding.ActivityMineNaiDirBinding
import com.sd.maplibrary.factorys.MapCoreApi
import com.sd.maplibrary.intfaces.OnNaviPresenterListener
import com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
/**
* 直接开始导航
*/
class MineNaiDirActivity : AppCompatActivity() {
class MineNaiDirActivity : AppCompatActivity(),OnNaviPresenterListener {
private lateinit var binding: ActivityMineNaiDirBinding
private var mapReadView: MapReadyView? = null
private var mineNaiParams:MineNaiParams?=null
private var mineNaiParams: MineNaiParams? = null
//获取接口功能实例
private var mapCoreApi = MapCoreApi.mapCoreApi
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
......@@ -33,15 +43,69 @@ class MineNaiDirActivity : AppCompatActivity() {
insets
}*/
mineNaiParams=intent.getParcelableExtra<MineNaiParams>("mineNaiParams")
mineNaiParams = intent.getParcelableExtra<MineNaiParams>("mineNaiParams")
binding.mapMultiView.addMapRenderCallback(object : OnMapReadyLis {
override fun onMapReady(mapReadyView: MapReadyView) {
this@MineNaiDirActivity.mapReadView = mapReadyView
//算路成功以后启动导航
startPlan()
}
})
}
private fun startPlan() {
val startPoint = mineNaiParams!!.starPoint
// 终点坐标116.3793,39.8643
val endPoint = mineNaiParams!!.endPoint
// 终点名称
val endName = mineNaiParams!!.endName
val startName = mineNaiParams!!.startName
var ways = mineNaiParams!!.ways
//开始路径规划
mapCoreApi.drivingPathPlanning(
startPoint, startName, endPoint, endName, ways, mapReadView,object : OnDriveRoute {
override fun onDriverRoute(driverRouteBean: DriverRouteBean) {
var routeBase = driverRouteBean.routeBase
MineNai.startNaviFormRouteBase(routeBase,startPoint)
}
}
)
}
//算路成功以后启动导航
override fun onDestroy() {
super.onDestroy()
MineNai.stopNavi()
}
override fun onTracking(ratio: Float) {
binding.layoutNavi.tmcBarView.updateRatio(ratio)
binding.layoutNavi.horCarTmc.updateRatio(ratio)
}
override fun onSmoothTracking(data: SmoothNaviData) {
}
override fun onDataUpdated(naviProgressData: NaviProgressData) {
}
override fun onTiBarUpdated(tmcSections: TmcSections) {
}
override fun onTextChanged(guidanceText: GuidanceText) {
}
override fun onDistanceChanged(distance: Int) {
}
override fun onArriveDestination() {
}
override fun onNaviEnded() {
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<?xml version="1.0" encoding="utf-8"?><!--<layout xmlns:android="http://schemas.android.com/apk/res/android"-->
<!-- xmlns:tools="http://schemas.android.com/tools">-->
<data>
<!-- <data>-->
<import type="android.view.View" />
<!-- <import type="android.view.View" />-->
<!-- <variable-->
<!-- name="svm"-->
<!-- type="com.ltzw.adasdriver.viewmodels.shards.ShowNaiVM" />-->
<!-- <variable-->
<!-- name="svm"-->
<!-- type="com.ltzw.adasdriver.viewmodels.shards.ShowNaiVM" />-->
<!-- <variable-->
<!-- name="route"-->
<!-- type="com.minedata.minenavi.navi.RouteBase" />-->
<!-- </data>-->
<!-- -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/my_navi_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/rect_white_10"
android:orientation="vertical">
<variable
name="route"
type="com.minedata.minenavi.navi.RouteBase" />
</data>
<!-- -->
<RelativeLayout
android:id="@+id/my_navi_info"
android:id="@+id/RL_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/rect_white_10"
android:orientation="vertical">
android:paddingHorizontal="@dimen/dp_10"
android:paddingTop="10dp">
<!-- 拐弯布局-->
<RelativeLayout
android:id="@+id/RL_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="@dimen/dp_10"
android:paddingTop="10dp">
<!-- 拐弯布局-->
<RelativeLayout
android:id="@+id/RL_turn"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
android:id="@+id/RL_turn"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<com.sd.maplibrary.ui.widget.MyTurnIconView
android:id="@+id/turnIconView"
android:layout_width="@dimen/dp_55"
android:layout_height="@dimen/dp_55"
android:scaleType="centerInside" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/turnIconView"
android:layout_marginLeft="8dp"
android:layout_toRightOf="@+id/turnIconView">
<TextView
android:id="@+id/tv_turnDistance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="-3dp"
android:textColor="@color/text_black"
android:textStyle="bold"
tools:text="2.5公里"
tools:textSize="22sp" />
<TextView
android:id="@+id/tv_turnAction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/tv_turnDistance"
android:layout_marginStart="5dp"
android:layout_marginLeft="@dimen/dp_5"
android:layout_toRightOf="@id/tv_turnDistance"
android:singleLine="true"
android:textColor="@color/text_black"
android:textStyle="bold"
tools:text="左转" />
<TextView
android:id="@+id/tv_turnRoadName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_turnDistance"
android:layout_alignLeft="@+id/tv_turnDistance"
android:layout_marginTop="2dp"
android:textColor="#80000000"
tools:text="北清路" />
</RelativeLayout>
</RelativeLayout>
<com.sd.maplibrary.ui.widget.MyTurnIconView
android:id="@+id/turnIconView"
android:layout_width="@dimen/dp_55"
android:layout_height="@dimen/dp_55"
android:scaleType="centerInside" />
<LinearLayout
android:layout_width="match_parent"
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/RL_turn"
android:layout_marginTop="5dp"
android:gravity="center_vertical"
android:orientation="horizontal">
android:layout_alignTop="@+id/turnIconView"
android:layout_marginLeft="8dp"
android:layout_toRightOf="@+id/turnIconView">
<TextView
android:id="@+id/tv_residualTimeDistance"
android:id="@+id/tv_turnDistance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="-3dp"
android:textColor="@color/text_black"
android:textSize="11sp"
tools:text="19公里" />
android:textStyle="bold"
tools:text="2.5公里"
tools:textSize="22sp" />
<TextView
android:id="@+id/tv_turnAction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="•"
android:textColor="@color/text_black" />
android:layout_alignBaseline="@id/tv_turnDistance"
android:layout_marginStart="5dp"
android:layout_marginLeft="@dimen/dp_5"
android:layout_toRightOf="@id/tv_turnDistance"
android:singleLine="true"
android:textColor="@color/text_black"
android:textStyle="bold"
tools:text="左转" />
<!-- 剩余时间-->
<TextView
android:id="@+id/tv_time"
android:id="@+id/tv_turnRoadName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_black"
android:textSize="11sp"
tools:text="12分钟" />
android:layout_below="@+id/tv_turnDistance"
android:layout_alignLeft="@+id/tv_turnDistance"
android:layout_marginTop="2dp"
android:textColor="#80000000"
tools:text="北清路" />
</RelativeLayout>
<ImageView
android:id="@+id/iv_bottomTrafficLight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:src="@drawable/traffic" />
</RelativeLayout>
<TextView
android:id="@+id/tv_trafficLightNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_black"
android:textSize="11sp"
tools:text="4" />
<TextView
android:id="@+id/tv_arriveTime"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:maxLines="1"
android:textColor="@color/text_black"
android:textSize="11sp"
tools:text="09:41到" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/RL_turn"
android:layout_marginTop="5dp"
android:gravity="center_vertical"
android:orientation="horizontal">
</LinearLayout>
<TextView
android:id="@+id/tv_residualTimeDistance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_black"
android:textSize="11sp"
tools:text="19公里" />
</RelativeLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="•"
android:textColor="@color/text_black" />
<RelativeLayout
android:id="@+id/RL_2"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_15"
android:layout_below="@+id/RL_1"
android:layout_marginTop="2dp">
<!-- 剩余时间-->
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_black"
android:textSize="11sp"
tools:text="12分钟" />
<com.sd.maplibrary.ui.widget.TmcBar
android:id="@+id/tmcBar_view"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_5"
android:layout_centerVertical="true"
android:layout_marginTop="4dp"
android:background="#00000000"
tools:ignore="RtlSymmetry" />
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tmcBar_view"
android:background="#3385FE" />
<ImageView
android:id="@+id/iv_bottomTrafficLight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:src="@drawable/traffic" />
<com.sd.maplibrary.ui.widget.HorCarTmc
android:id="@+id/horCarTmc"
<TextView
android:id="@+id/tv_trafficLightNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/text_black"
android:textSize="11sp"
tools:text="4" />
<TextView
android:id="@+id/tv_arriveTime"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000"
android:orientation="horizontal" />
</RelativeLayout>
android:layout_height="wrap_content"
android:gravity="end"
android:maxLines="1"
android:textColor="@color/text_black"
android:textSize="11sp"
tools:text="09:41到" />
<RelativeLayout
android:id="@+id/RL_3"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_40"
android:layout_below="@+id/RL_2"
android:background="@drawable/rect_land_10">
<!-- 车道线 -->
<com.sd.maplibrary.ui.widget.MyLaneView
android:id="@+id/naviLandBand"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_marginHorizontal="5dp"
android:paddingBottom="2dp"
android:visibility="visible" />
<!-- <com.minedata.minenavi.navi.LaneView-->
<!-- android:id="@+id/naviLandBand"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_centerHorizontal="true"-->
<!-- android:layout_marginHorizontal="5dp"-->
<!-- android:background="#3385FE"-->
<!-- android:visibility="visible" />-->
</RelativeLayout>
</LinearLayout>
<!-- <ImageView-->
<!-- android:layout_width="@dimen/dp_15"-->
<!-- android:layout_height="@dimen/dp_15"-->
<!-- android:layout_below="@+id/RL_1"-->
<!-- android:scaleType="centerInside"-->
<!-- android:src="@drawable/my_small_car" />-->
</RelativeLayout>
<RelativeLayout
android:id="@+id/RL_2"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_15"
android:layout_below="@+id/RL_1"
android:layout_marginTop="2dp">
<!-- tools:ignore="RtlSymmetry"-->
<com.sd.maplibrary.ui.widget.TmcBar
android:id="@+id/tmcBar_view"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_5"
android:layout_centerVertical="true"
android:layout_marginTop="4dp"
android:background="#00000000"
tools:ignore="RtlSymmetry" />
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tmcBar_view"
android:background="#3385FE" />
<com.sd.maplibrary.ui.widget.HorCarTmc
android:id="@+id/horCarTmc"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000"
android:orientation="horizontal" />
</RelativeLayout>
</layout>
\ No newline at end of file
<RelativeLayout
android:id="@+id/RL_3"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_40"
android:layout_below="@+id/RL_2"
android:background="@drawable/rect_land_10">
<!-- 车道线 -->
<com.sd.maplibrary.ui.widget.MyLaneView
android:id="@+id/naviLandBand"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_marginHorizontal="5dp"
android:paddingBottom="2dp"
android:visibility="visible" />
<!-- <com.minedata.minenavi.navi.LaneView-->
<!-- android:id="@+id/naviLandBand"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_centerHorizontal="true"-->
<!-- android:layout_marginHorizontal="5dp"-->
<!-- android:background="#3385FE"-->
<!-- android:visibility="visible" />-->
</RelativeLayout>
<!-- <ImageView-->
<!-- android:layout_width="@dimen/dp_15"-->
<!-- android:layout_height="@dimen/dp_15"-->
<!-- android:layout_below="@+id/RL_1"-->
<!-- android:scaleType="centerInside"-->
<!-- android:src="@drawable/my_small_car" />-->
<!-- tools:ignore="RtlSymmetry"-->
</RelativeLayout>
<!--</layout>-->
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="MapMultiView">
<attr name="map_type" format="enum" >
<enum name="MINE" value="0"/>
<enum name="AMAP" value="1"/>
<!-- 地图子类型-->
<attr name="map_child_type" format="enum">
<enum name="high" value="1" /><!--高精-->
<enum name="road" value="2" /><!--局部-->
</attr>
</declare-styleable>
......
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