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

加载高精地图

parent fc1586ea
...@@ -24,4 +24,5 @@ android.nonTransitiveRClass=true ...@@ -24,4 +24,5 @@ android.nonTransitiveRClass=true
#android.defaults.buildfeatures.databinding=true #android.defaults.buildfeatures.databinding=true
#????gradle??????????DGP v2: #????gradle??????????DGP v2:
org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled org.jetbrains.dokka.experimental.gradle.pluginMode=V2Enabled
org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true org.jetbrains.dokka.experimental.gradle.pluginMode.noWarn=true
\ No newline at end of file unityStreamingAssets=.unity3d, google-services-desktop.json, google-services.json, GoogleService-Info.plist
\ No newline at end of file
...@@ -4,6 +4,8 @@ plugins { ...@@ -4,6 +4,8 @@ plugins {
id("kotlin-kapt") id("kotlin-kapt")
// kotlin("jvm") version "2.1.10" // kotlin("jvm") version "2.1.10"
id("kotlin-parcelize") 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" id("org.jetbrains.dokka") version "2.0.0"
} }
...@@ -39,36 +41,11 @@ android { ...@@ -39,36 +41,11 @@ android {
// dataBinding = true // dataBinding = true
viewBinding = 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 { 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.core.ktx)
implementation(libs.androidx.appcompat) implementation(libs.androidx.appcompat)
implementation(libs.material) implementation(libs.material)
...@@ -77,11 +54,10 @@ dependencies { ...@@ -77,11 +54,10 @@ dependencies {
testImplementation(libs.junit) testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core) androidTestImplementation(libs.androidx.espresso.core)
//文档插件库
// Is applied universally //四维高精地图依赖
// dokkaPlugin("org.jetbrains.dokka:mathjax-plugin:2.0.0") // implementation("daohang.tingche.unityLibrary:adas:1.0")
// Is applied for the single-module dokkaHtml task only
// dokkaHtmlPlugin("org.jetbrains.dokka:kotlin-as-java-plugin:2.0.0")
//高德 //高德
// implementation("com.amap.api:navi-3dmap:latest.integration") // implementation("com.amap.api:navi-3dmap:latest.integration")
// implementation("com.amap.api:search:latest.integration") // implementation("com.amap.api:search:latest.integration")
...@@ -94,6 +70,56 @@ dependencies { ...@@ -94,6 +70,56 @@ dependencies {
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2") implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2")
//fragment-ktx //fragment-ktx
implementation("androidx.fragment:fragment-ktx:1.8.0") 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 @@ ...@@ -29,12 +29,12 @@
<application> <application>
<!-- android:supportsRtl="true"> --> <!-- android:supportsRtl="true"> -->
<meta-data <!-- <meta-data-->
android:name="com.minedata.minenavi.apikey" <!-- android:name="com.minedata.minenavi.apikey"-->
android:value="57ac7a0d56494912a0c28e651fa4a40a" /> <!-- android:value="57ac7a0d56494912a0c28e651fa4a40a" />-->
<meta-data <!-- <meta-data-->
android:name="com.amap.api.v2.apikey" <!-- android:name="com.amap.api.v2.apikey"-->
android:value="3b7d009011b97dcc3815a93e8ddfcd77" /> <!-- android:value="3b7d009011b97dcc3815a93e8ddfcd77" />-->
<uses-library <uses-library
android:name="org.apache.http.legacy" android:name="org.apache.http.legacy"
......
...@@ -12,12 +12,11 @@ class DriverRouteBean { ...@@ -12,12 +12,11 @@ class DriverRouteBean {
val instance: DriverRouteBean by lazy { DriverRouteBean() } val instance: DriverRouteBean by lazy { DriverRouteBean() }
} }
/**四维路径规划返回*/ /****四维某条具体路径用于返回**/
var routeCollection: RouteCollection? = null var routeBase: RouteBase? = null
//高德 //高德
var aMapCalcRouteResult: AMapCalcRouteResult?=null var aMapCalcRouteResult: AMapCalcRouteResult?=null
// var driveRouteResult: DriveRouteResult? = null
} }
/** /**
......
...@@ -29,6 +29,7 @@ import com.sd.maplibrary.UserCtx ...@@ -29,6 +29,7 @@ import com.sd.maplibrary.UserCtx
import com.sd.maplibrary.bean.DriverRouteBean import com.sd.maplibrary.bean.DriverRouteBean
import com.sd.maplibrary.bean.MSLatLng import com.sd.maplibrary.bean.MSLatLng
import com.sd.maplibrary.bean.WayPoi import com.sd.maplibrary.bean.WayPoi
import com.sd.maplibrary.core.basic.OnDriveRoute
import com.sd.maplibrary.intfaces.MyAMapNaviListener import com.sd.maplibrary.intfaces.MyAMapNaviListener
import com.sd.maplibrary.intfaces.MyMineNaviListener import com.sd.maplibrary.intfaces.MyMineNaviListener
import com.sd.maplibrary.utils.DisplayUtil import com.sd.maplibrary.utils.DisplayUtil
...@@ -199,9 +200,9 @@ private object MSRoutePlans { ...@@ -199,9 +200,9 @@ private object MSRoutePlans {
} }
/**自定义驾车路线返回*/ /**自定义驾车路线返回*/
interface OnDriveRoute { /* interface OnDriveRoute {
fun onDriverRoute(driverRouteBean: DriverRouteBean) fun onDriverRoute(driverRouteBean: DriverRouteBean)
} }*/
/** /**
...@@ -223,7 +224,7 @@ private object MSRoutePlans { ...@@ -223,7 +224,7 @@ private object MSRoutePlans {
} }
// 获取第一条路线数据并设置路线绘制选项 // 获取第一条路线数据并设置路线绘制选项
var routeBase = driverRB.routeCollection?.routes?.get(0) var routeBase = driverRB.routeBase
val options = RouteOptions() val options = RouteOptions()
.routeBase(routeBase) .routeBase(routeBase)
.colorType(Route.RouteColorType.enrouteTi) .colorType(Route.RouteColorType.enrouteTi)
...@@ -331,7 +332,7 @@ private object MSRoutePlans { ...@@ -331,7 +332,7 @@ private object MSRoutePlans {
override fun onCalculateRouteSuccess(data: RouteCollection) { override fun onCalculateRouteSuccess(data: RouteCollection) {
// 路线规划成功 // 路线规划成功
driverRouteBean.routeCollection = data driverRouteBean.routeBase = data.routes.get(0)
onDriveRoute?.onDriverRoute(driverRouteBean) 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 ...@@ -8,9 +8,11 @@ import com.amap.api.navi.model.AMapNaviPath
import com.amap.api.navi.model.NaviLatLng import com.amap.api.navi.model.NaviLatLng
import com.amap.api.navi.view.RouteOverLay import com.amap.api.navi.view.RouteOverLay
import com.sd.maplibrary.UserCtx import com.sd.maplibrary.UserCtx
import com.sd.maplibrary.bean.DriverRouteBean
import com.sd.maplibrary.bean.MSLatLng import com.sd.maplibrary.bean.MSLatLng
import com.sd.maplibrary.bean.WayPoi import com.sd.maplibrary.bean.WayPoi
import com.sd.maplibrary.core.MapReadyView import com.sd.maplibrary.core.MapReadyView
import com.sd.maplibrary.core.basic.OnDriveRoute
import com.sd.maplibrary.intfaces.MyAMapNaviListener import com.sd.maplibrary.intfaces.MyAMapNaviListener
import com.amap.api.maps.model.LatLng as ALatLng import com.amap.api.maps.model.LatLng as ALatLng
...@@ -22,13 +24,18 @@ class AmapRoutePlans { ...@@ -22,13 +24,18 @@ class AmapRoutePlans {
val instance: AmapRoutePlans by lazy { AmapRoutePlans() } val instance: AmapRoutePlans by lazy { AmapRoutePlans() }
} }
//驾车算路回调对象
private var driverRouteBean = DriverRouteBean.instance
//驾车路径规划回调接口
private var onDriveRoute: OnDriveRoute? = null
//初始化高德 导航 对象 //初始化高德 导航 对象
private var mAMapNavi: AMapNavi? = null private var mAMapNavi: AMapNavi? = null
//高德保存当前算好的路线 //高德保存当前算好的路线
private var routeOverlay: RouteOverLay? = null private var routeOverlay: RouteOverLay? = null
// private val routeOverlays: SparseArray<RouteOverLay> = SparseArray<RouteOverLay>()
private var mapReadView: MapReadyView? = null private var mapReadView: MapReadyView? = null
...@@ -47,8 +54,11 @@ class AmapRoutePlans { ...@@ -47,8 +54,11 @@ class AmapRoutePlans {
endName: String = "", endName: String = "",
ways: List<WayPoi>, ways: List<WayPoi>,
mapReadView: MapReadyView?, mapReadView: MapReadyView?,
onDriveRoute: OnDriveRoute?
) { ) {
this.onDriveRoute = onDriveRoute
this.mapReadView = mapReadView this.mapReadView = mapReadView
var context = UserCtx.instance.mContext var context = UserCtx.instance.mContext
mAMapNavi = AMapNavi.getInstance(context) mAMapNavi = AMapNavi.getInstance(context)
mAMapNavi!!.addAMapNaviListener(aMapNaviListener) mAMapNavi!!.addAMapNaviListener(aMapNaviListener)
...@@ -81,7 +91,7 @@ class AmapRoutePlans { ...@@ -81,7 +91,7 @@ class AmapRoutePlans {
wayPoints.add(NaviLatLng(wpoi.passPoint!!.lat, wpoi.passPoint!!.lng)) 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( mAMapNavi?.calculateDriveRoute(
startList, startList,
...@@ -143,6 +153,9 @@ class AmapRoutePlans { ...@@ -143,6 +153,9 @@ class AmapRoutePlans {
// 路线规划成功 // 路线规划成功
println("----------onCalculateRouteSuccess") println("----------onCalculateRouteSuccess")
drawPlanPath(aMapCalcRouteResult) drawPlanPath(aMapCalcRouteResult)
driverRouteBean.aMapCalcRouteResult = aMapCalcRouteResult
onDriveRoute?.onDriverRoute(driverRouteBean)
// mAMapNavi?.startNavi(NaviType.EMULATOR); // mAMapNavi?.startNavi(NaviType.EMULATOR);
} }
......
...@@ -7,11 +7,13 @@ import com.minedata.minenavi.map.Model ...@@ -7,11 +7,13 @@ import com.minedata.minenavi.map.Model
import com.minedata.minenavi.map.ModelOptions import com.minedata.minenavi.map.ModelOptions
import com.minedata.minenavi.map.Overlay import com.minedata.minenavi.map.Overlay
import com.minedata.minenavi.mapdal.DataPreference import com.minedata.minenavi.mapdal.DataPreference
import com.minedata.minenavi.mapdal.LatLng
import com.minedata.minenavi.navi.GuidanceText import com.minedata.minenavi.navi.GuidanceText
import com.minedata.minenavi.navi.NaviProgressData import com.minedata.minenavi.navi.NaviProgressData
import com.minedata.minenavi.navi.NaviSession import com.minedata.minenavi.navi.NaviSession
import com.minedata.minenavi.navi.NaviSessionData import com.minedata.minenavi.navi.NaviSessionData
import com.minedata.minenavi.navi.NaviSessionParams import com.minedata.minenavi.navi.NaviSessionParams
import com.minedata.minenavi.navi.RouteBase
import com.minedata.minenavi.navi.SmoothNaviData import com.minedata.minenavi.navi.SmoothNaviData
import com.minedata.minenavi.navi.TmcSections import com.minedata.minenavi.navi.TmcSections
import com.minedata.minenavi.util.Tools import com.minedata.minenavi.util.Tools
...@@ -38,10 +40,7 @@ object MineNai { ...@@ -38,10 +40,7 @@ object MineNai {
/**四维导航监听回调***/ /**四维导航监听回调***/
var onNaviPresenterListener: OnNaviPresenterListener? = null var onNaviPresenterListener: OnNaviPresenterListener? = null
/** init {
* 开启四维导航 客户端自实现数据回调
*/
fun startNavi(mapReadView: MapReadyView?) {
mNaviSession = NaviSession.getInstance() mNaviSession = NaviSession.getInstance()
mNaviSession?.enableSound(true) mNaviSession?.enableSound(true)
var naviSessionParams = NaviSessionParams().apply { var naviSessionParams = NaviSessionParams().apply {
...@@ -52,8 +51,14 @@ object MineNai { ...@@ -52,8 +51,14 @@ object MineNai {
var context = UserCtx.instance.mContext var context = UserCtx.instance.mContext
mNaviSession!!.init(context, naviSessionParams) mNaviSession!!.init(context, naviSessionParams)
mNaviSession?.setDataPreference(DataPreference.preferOnline) mNaviSession?.setDataPreference(DataPreference.preferOnline)
mNaviSession?.addMineNaviListener(myMineNaviListener)
}
/**
* 开启四维导航 客户端自实现数据回调
*/
fun startNavi(mapReadView: MapReadyView?) {
mNaviSession?.addMineNaviListener(myMineNaviListener)
var mRouteBas = MineRoutePlans.mRouteBase var mRouteBas = MineRoutePlans.mRouteBase
if (mRouteBas != null) { if (mRouteBas != null) {
mMineMap = mapReadView?.mMineMap mMineMap = mapReadView?.mMineMap
...@@ -80,6 +85,28 @@ object MineNai { ...@@ -80,6 +85,28 @@ object MineNai {
context?.startActivity(inten) 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 { ...@@ -118,8 +145,8 @@ object MineNai {
*/ */
private var myMineNaviListener = object : MyMineNaviListener() { private var myMineNaviListener = object : MyMineNaviListener() {
override fun onTracking(data: NaviSessionData) { override fun onTracking(data: NaviSessionData) {
super.onTracking(data) // super.onTracking(data)
onNaviPresenterListener?.onTracking(data) onNaviPresenterListener?.onTracking(data.travelledDistance.toFloat() / data.routeLength)
} }
override fun onSmoothTracking(data: SmoothNaviData) { override fun onSmoothTracking(data: SmoothNaviData) {
......
...@@ -15,9 +15,11 @@ import com.minedata.minenavi.navi.RoutePlan ...@@ -15,9 +15,11 @@ import com.minedata.minenavi.navi.RoutePlan
import com.minedata.minenavi.navi.RouterErrorInfo import com.minedata.minenavi.navi.RouterErrorInfo
import com.minedata.minenavi.util.Tools import com.minedata.minenavi.util.Tools
import com.sd.maplibrary.UserCtx import com.sd.maplibrary.UserCtx
import com.sd.maplibrary.bean.DriverRouteBean
import com.sd.maplibrary.bean.MSLatLng import com.sd.maplibrary.bean.MSLatLng
import com.sd.maplibrary.bean.WayPoi import com.sd.maplibrary.bean.WayPoi
import com.sd.maplibrary.core.MapReadyView import com.sd.maplibrary.core.MapReadyView
import com.sd.maplibrary.core.basic.OnDriveRoute
import com.sd.maplibrary.intfaces.MyMineNaviListener import com.sd.maplibrary.intfaces.MyMineNaviListener
import com.sd.maplibrary.utils.DisplayUtil import com.sd.maplibrary.utils.DisplayUtil
...@@ -29,10 +31,10 @@ object MineRoutePlans { ...@@ -29,10 +31,10 @@ object MineRoutePlans {
private var mNaviSession: NaviSession? = null 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 { ...@@ -49,7 +51,6 @@ object MineRoutePlans {
/** 路径规划起点*/ /** 路径规划起点*/
var mStartPoint: Point = Point() var mStartPoint: Point = Point()
/**驾车路径规划 /**驾车路径规划
* @param starPoint 起点坐标 * @param starPoint 起点坐标
* @param startName 起点名称 * @param startName 起点名称
...@@ -66,9 +67,9 @@ object MineRoutePlans { ...@@ -66,9 +67,9 @@ object MineRoutePlans {
endName: String = "", endName: String = "",
ways: List<WayPoi>, ways: List<WayPoi>,
mapReadView: MapReadyView?, mapReadView: MapReadyView?,
// onDriveRoute: MineRoutePlans.OnDriveRoute onDriveRoute: OnDriveRoute?
) { ) {
// this.onDriveRoute = onDriveRoute this.onDriveRoute = onDriveRoute
this.mapReadView = mapReadView this.mapReadView = mapReadView
// var context = UserCtx.instance.mContext // var context = UserCtx.instance.mContext
...@@ -200,7 +201,8 @@ object MineRoutePlans { ...@@ -200,7 +201,8 @@ object MineRoutePlans {
// 获取单条道路信息 // 获取单条道路信息
mRouteBase = data.routes.get(0) mRouteBase = data.routes.get(0)
drawPlanPath(mRouteBase) drawPlanPath(mRouteBase)
// onDriveRoute?.onDriverRoute(mRouteBase) driverRouteBean.routeBase=mRouteBase
onDriveRoute?.onDriverRoute(driverRouteBean)
} }
override fun onCalculateRouteFailed(data: RouterErrorInfo) { override fun onCalculateRouteFailed(data: RouterErrorInfo) {
......
...@@ -5,6 +5,7 @@ import com.sd.maplibrary.bean.WayPoi ...@@ -5,6 +5,7 @@ import com.sd.maplibrary.bean.WayPoi
import com.sd.maplibrary.core.MapReadyView import com.sd.maplibrary.core.MapReadyView
import com.sd.maplibrary.core.basic.MSMarker import com.sd.maplibrary.core.basic.MSMarker
import com.sd.maplibrary.core.basic.MSOverlay 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.OnMSPoiSearchLis
import com.sd.maplibrary.core.basic.OnMsGpsLoc import com.sd.maplibrary.core.basic.OnMsGpsLoc
...@@ -134,9 +135,10 @@ abstract class AbsMapCore : IMapBasic, IMapBusin { ...@@ -134,9 +135,10 @@ abstract class AbsMapCore : IMapBasic, IMapBusin {
endPoint: MSLatLng, endPoint: MSLatLng,
endName: String, endName: String,
ways: List<WayPoi>, 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 ...@@ -5,6 +5,7 @@ import com.sd.maplibrary.bean.WayPoi
import com.sd.maplibrary.core.MapReadyView import com.sd.maplibrary.core.MapReadyView
import com.sd.maplibrary.core.basic.MSMarker import com.sd.maplibrary.core.basic.MSMarker
import com.sd.maplibrary.core.basic.MSOverlay 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.OnMSPoiSearchLis
import com.sd.maplibrary.core.basic.OnMsGpsLoc import com.sd.maplibrary.core.basic.OnMsGpsLoc
import com.sd.maplibrary.core.basic.amap.AmapDrawInMap import com.sd.maplibrary.core.basic.amap.AmapDrawInMap
...@@ -152,7 +153,8 @@ class AmapBasic : IMapBasic { ...@@ -152,7 +153,8 @@ class AmapBasic : IMapBasic {
endPoint: MSLatLng, endPoint: MSLatLng,
endName: String, endName: String,
ways: List<WayPoi>, ways: List<WayPoi>,
mapReadView: MapReadyView? mapReadView: MapReadyView?,
onDriveRoute: OnDriveRoute?
) { ) {
AmapRoutePlans.instance.drivingPathPlanning( AmapRoutePlans.instance.drivingPathPlanning(
starPoint, starPoint,
...@@ -160,7 +162,8 @@ class AmapBasic : IMapBasic { ...@@ -160,7 +162,8 @@ class AmapBasic : IMapBasic {
endPoint, endPoint,
endName, endName,
ways, ways,
mapReadView mapReadView,
onDriveRoute
) )
} }
......
...@@ -7,6 +7,7 @@ import com.sd.maplibrary.core.MapReadyView ...@@ -7,6 +7,7 @@ import com.sd.maplibrary.core.MapReadyView
import com.sd.maplibrary.core.basic.MSLocStyle import com.sd.maplibrary.core.basic.MSLocStyle
import com.sd.maplibrary.core.basic.MSMarker import com.sd.maplibrary.core.basic.MSMarker
import com.sd.maplibrary.core.basic.MSOverlay 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.OnMSPoiSearchLis
import com.sd.maplibrary.core.basic.OnMsGpsLoc import com.sd.maplibrary.core.basic.OnMsGpsLoc
...@@ -193,8 +194,8 @@ interface IMapBasic { ...@@ -193,8 +194,8 @@ interface IMapBasic {
endPoint: MSLatLng, endPoint: MSLatLng,
endName: String = "", endName: String = "",
ways: List<WayPoi>, ways: List<WayPoi>,
mapReadView: MapReadyView? mapReadView: MapReadyView?,
// onDriveRoute: OnDriveRoute onDriveRoute: OnDriveRoute?
) )
/** /**
......
...@@ -5,6 +5,7 @@ import com.sd.maplibrary.bean.WayPoi ...@@ -5,6 +5,7 @@ import com.sd.maplibrary.bean.WayPoi
import com.sd.maplibrary.core.MapReadyView import com.sd.maplibrary.core.MapReadyView
import com.sd.maplibrary.core.basic.MSMarker import com.sd.maplibrary.core.basic.MSMarker
import com.sd.maplibrary.core.basic.MSOverlay 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.OnMSPoiSearchLis
import com.sd.maplibrary.core.basic.OnMsGpsLoc import com.sd.maplibrary.core.basic.OnMsGpsLoc
import com.sd.maplibrary.core.basic.mine.MimeGestures import com.sd.maplibrary.core.basic.mine.MimeGestures
...@@ -153,7 +154,8 @@ class MineBasic : IMapBasic { ...@@ -153,7 +154,8 @@ class MineBasic : IMapBasic {
endPoint: MSLatLng, endPoint: MSLatLng,
endName: String, endName: String,
ways: List<WayPoi>, ways: List<WayPoi>,
mapReadView: MapReadyView? mapReadView: MapReadyView?,
onDriveRoute: OnDriveRoute?
) { ) {
MineRoutePlans.drivingPathPlanning( MineRoutePlans.drivingPathPlanning(
starPoint, starPoint,
...@@ -161,7 +163,8 @@ class MineBasic : IMapBasic { ...@@ -161,7 +163,8 @@ class MineBasic : IMapBasic {
endPoint, endPoint,
endName, endName,
ways, 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 ...@@ -13,7 +13,7 @@ import com.minedata.minenavi.navi.TmcSections
*/ */
interface OnNaviPresenterListener { interface OnNaviPresenterListener {
fun onTracking(data: NaviSessionData) fun onTracking(ratio: Float)
fun onSmoothTracking(data: SmoothNaviData) fun onSmoothTracking(data: SmoothNaviData)
......
...@@ -7,6 +7,7 @@ import android.widget.LinearLayout ...@@ -7,6 +7,7 @@ import android.widget.LinearLayout
import androidx.core.content.withStyledAttributes import androidx.core.content.withStyledAttributes
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import com.amap.api.maps.AMap import com.amap.api.maps.AMap
import com.ltzw.adasdriver.ui.fragment.UnityFragment
import com.minedata.minenavi.map.MineMap import com.minedata.minenavi.map.MineMap
import com.sd.maplibrary.MAP_TYPE import com.sd.maplibrary.MAP_TYPE
import com.sd.maplibrary.MSDKInitializer import com.sd.maplibrary.MSDKInitializer
...@@ -41,22 +42,28 @@ class MapMultiView : LinearLayout { ...@@ -41,22 +42,28 @@ class MapMultiView : LinearLayout {
private lateinit var binding: MultiViewBinding private lateinit var binding: MultiViewBinding
//四维地图 //四维在线地图
private val foreMapFragment by lazy { ForeMapFragment.newInstance() } private val foreMapFragment by lazy { ForeMapFragment.newInstance() }
//四维高精地图
private val unityFragment by lazy { UnityFragment.newInstance() }
//高德地图 //高德地图
private val aMapFragment by lazy { AMapFragment.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) { private var childType = -1
// if (hasValue(R.styleable.MapMultiView_map_type)) {
// enmuValue = getInt(R.styleable.MapMultiView_map_type, -1)
// }
// }
enmuValue = MSDKInitializer.getMapType().ordinal
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("------------MapMultiView = ${MSDKInitializer.getMapType().ordinal}")
// println("------------enmuValue = $enmuValue") // println("------------enmuValue = $enmuValue")
binding = MultiViewBinding.inflate(LayoutInflater.from(context)) binding = MultiViewBinding.inflate(LayoutInflater.from(context))
...@@ -65,14 +72,28 @@ class MapMultiView : LinearLayout { ...@@ -65,14 +72,28 @@ class MapMultiView : LinearLayout {
} }
fun loadMapFrament() { private fun loadMapFrament() {
if (context is FragmentActivity) { if (context is FragmentActivity) {
var act = context as FragmentActivity var act = context as FragmentActivity
var ft = act.supportFragmentManager.beginTransaction() var ft = act.supportFragmentManager.beginTransaction()
if (enmuValue == MAP_TYPE.MINE.ordinal) { if (mapType == MAP_TYPE.MINE.ordinal) {//四维地图
ft.replace(R.id.frame_layout, foreMapFragment) if (childType == -1) {
} else if (enmuValue == MAP_TYPE.AMAP.ordinal) { ft.replace(R.id.frame_layout, foreMapFragment)
ft.replace(R.id.frame_layout, aMapFragment) } 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() ft.commit()
} }
...@@ -81,22 +102,22 @@ class MapMultiView : LinearLayout { ...@@ -81,22 +102,22 @@ class MapMultiView : LinearLayout {
/**地图加载监听回调*/ /**地图加载监听回调*/
fun addMapRenderCallback(onMapReadyLis: OnMapReadyLis) { fun addMapRenderCallback(onMapReadyLis: OnMapReadyLis) {
if (enmuValue == 0) { if (mapType == 0) {
foreMapFragment.addMapRenderCallback(onMapReadyLis) foreMapFragment.addMapRenderCallback(onMapReadyLis)
} else if (enmuValue == 1) { } else if (mapType == 1) {
aMapFragment.addMapRenderCallback(onMapReadyLis) aMapFragment.addMapRenderCallback(onMapReadyLis)
} }
} }
/**获取 mMineMap 或者 aMap ***/ // /**获取 mMineMap 或者 aMap ***/
fun getAnyMap(): Any? { // fun getAnyMap(): Any? {
if (enmuValue == 0) { // if (mapType == 0) {
return foreMapFragment.getAnyMap() as MineMap // return foreMapFragment.getAnyMap() as MineMap
} else if (enmuValue == 1) { // } else if (mapType == 1) {
return aMapFragment.getAnyMap() as AMap // return aMapFragment.getAnyMap() as AMap
} // }
return null // return null
} // }
} }
......
...@@ -3,24 +3,34 @@ package com.sd.maplibrary.ui ...@@ -3,24 +3,34 @@ package com.sd.maplibrary.ui
import android.os.Bundle import android.os.Bundle
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat import com.minedata.minenavi.navi.GuidanceText
import androidx.core.view.WindowInsetsCompat import com.minedata.minenavi.navi.NaviProgressData
import com.sd.maplibrary.R 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.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.core.basic.mine.MineNaiParams
import com.sd.maplibrary.databinding.ActivityMineNaiDirBinding 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 import com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
/** /**
* 直接开始导航 * 直接开始导航
*/ */
class MineNaiDirActivity : AppCompatActivity() { class MineNaiDirActivity : AppCompatActivity(),OnNaviPresenterListener {
private lateinit var binding: ActivityMineNaiDirBinding private lateinit var binding: ActivityMineNaiDirBinding
private var mapReadView: MapReadyView? = null 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?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
...@@ -33,15 +43,69 @@ class MineNaiDirActivity : AppCompatActivity() { ...@@ -33,15 +43,69 @@ class MineNaiDirActivity : AppCompatActivity() {
insets insets
}*/ }*/
mineNaiParams=intent.getParcelableExtra<MineNaiParams>("mineNaiParams") mineNaiParams = intent.getParcelableExtra<MineNaiParams>("mineNaiParams")
binding.mapMultiView.addMapRenderCallback(object : OnMapReadyLis { binding.mapMultiView.addMapRenderCallback(object : OnMapReadyLis {
override fun onMapReady(mapReadyView: MapReadyView) { override fun onMapReady(mapReadyView: MapReadyView) {
this@MineNaiDirActivity.mapReadView = 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"?> <?xml version="1.0" encoding="utf-8"?><!--<layout xmlns:android="http://schemas.android.com/apk/res/android"-->
<layout xmlns:android="http://schemas.android.com/apk/res/android" <!-- xmlns:tools="http://schemas.android.com/tools">-->
xmlns:tools="http://schemas.android.com/tools">
<data> <!-- <data>-->
<import type="android.view.View" /> <!-- <import type="android.view.View" />-->
<!-- <variable--> <!-- <variable-->
<!-- name="svm"--> <!-- name="svm"-->
<!-- type="com.ltzw.adasdriver.viewmodels.shards.ShowNaiVM" />--> <!-- 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 <RelativeLayout
android:id="@+id/my_navi_info" android:id="@+id/RL_1"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/rect_white_10" android:paddingHorizontal="@dimen/dp_10"
android:orientation="vertical"> android:paddingTop="10dp">
<!-- 拐弯布局-->
<RelativeLayout <RelativeLayout
android:id="@+id/RL_1" android:id="@+id/RL_turn"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" 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">
<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" />
<com.sd.maplibrary.ui.widget.MyTurnIconView
<RelativeLayout android:id="@+id/turnIconView"
android:layout_width="wrap_content" android:layout_width="@dimen/dp_55"
android:layout_height="wrap_content" android:layout_height="@dimen/dp_55"
android:layout_alignTop="@+id/turnIconView" android:scaleType="centerInside" />
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>
<LinearLayout <RelativeLayout
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_below="@+id/RL_turn" android:layout_alignTop="@+id/turnIconView"
android:layout_marginTop="5dp" android:layout_marginLeft="8dp"
android:gravity="center_vertical" android:layout_toRightOf="@+id/turnIconView">
android:orientation="horizontal">
<TextView <TextView
android:id="@+id/tv_residualTimeDistance" android:id="@+id/tv_turnDistance"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="-3dp"
android:textColor="@color/text_black" android:textColor="@color/text_black"
android:textSize="11sp" android:textStyle="bold"
tools:text="19公里" /> tools:text="2.5公里"
tools:textSize="22sp" />
<TextView <TextView
android:id="@+id/tv_turnAction"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="•" android:layout_alignBaseline="@id/tv_turnDistance"
android:textColor="@color/text_black" /> 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 <TextView
android:id="@+id/tv_time" android:id="@+id/tv_turnRoadName"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="@color/text_black" android:layout_below="@+id/tv_turnDistance"
android:textSize="11sp" android:layout_alignLeft="@+id/tv_turnDistance"
tools:text="12分钟" /> android:layout_marginTop="2dp"
android:textColor="#80000000"
tools:text="北清路" />
</RelativeLayout>
<ImageView </RelativeLayout>
android:id="@+id/iv_bottomTrafficLight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:src="@drawable/traffic" />
<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 <LinearLayout
android:id="@+id/tv_arriveTime" android:layout_width="match_parent"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:layout_height="wrap_content" android:layout_below="@+id/RL_turn"
android:gravity="end" android:layout_marginTop="5dp"
android:maxLines="1" android:gravity="center_vertical"
android:textColor="@color/text_black" android:orientation="horizontal">
android:textSize="11sp"
tools:text="09:41到" />
</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" <TextView
android:layout_width="match_parent" android:id="@+id/tv_time"
android:layout_height="@dimen/dp_15" android:layout_width="wrap_content"
android:layout_below="@+id/RL_1" android:layout_height="wrap_content"
android:layout_marginTop="2dp"> 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 <ImageView
android:layout_width="match_parent" android:id="@+id/iv_bottomTrafficLight"
android:layout_height="match_parent" android:layout_width="wrap_content"
android:layout_below="@+id/tmcBar_view" android:layout_height="wrap_content"
android:background="#3385FE" /> android:layout_marginLeft="3dp"
android:src="@drawable/traffic" />
<com.sd.maplibrary.ui.widget.HorCarTmc <TextView
android:id="@+id/horCarTmc" 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_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:background="#00000000" android:gravity="end"
android:orientation="horizontal" /> android:maxLines="1"
</RelativeLayout> android:textColor="@color/text_black"
android:textSize="11sp"
tools:text="09:41到" />
<RelativeLayout </LinearLayout>
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--> </RelativeLayout>
<!-- 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
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> </RelativeLayout>
</layout> <RelativeLayout
\ No newline at end of file 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"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<declare-styleable name="MapMultiView"> <declare-styleable name="MapMultiView">
<attr name="map_type" format="enum" > <!-- 地图子类型-->
<enum name="MINE" value="0"/> <attr name="map_child_type" format="enum">
<enum name="AMAP" value="1"/> <enum name="high" value="1" /><!--高精-->
<enum name="road" value="2" /><!--局部-->
</attr> </attr>
</declare-styleable> </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