Commit fc1586ea authored by p x's avatar p x
Browse files

加入自实现的导航类

parent 42135beb
kotlin version: 2.0.21
error message: The daemon has terminated unexpectedly on startup attempt #1 with error code: 0. The daemon process output:
1. Kotlin compile daemon is ready
......@@ -14,13 +14,13 @@
tools:targetApi="31">
<meta-data
android:name="com.minedata.minenavi.apikey"
android:value="57ac7a0d56494912a0c28e651fa4a40a" />
<!-- <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.amap.api.v2.apikey"-->
<!-- android:value="3b7d009011b97dcc3815a93e8ddfcd77" />-->
<activity
android:name=".ui.ShowCarOnlineActivity"
......
......@@ -3,23 +3,16 @@ package com.sd.mapmultiengine
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.view.View
import android.widget.AdapterView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import com.sd.maplibrary.MAP_TYPE
import com.sd.maplibrary.MSDKInitializer
import com.sd.maplibrary.OnSdkInitCb
import com.sd.mapmultiengine.adapter.DemoListAdapter
import com.sd.mapmultiengine.databinding.ActivityMainBinding
import com.sd.mapmultiengine.ui.AMapWmsActivity
import com.sd.mapmultiengine.ui.CalculateDistanceActivity
import com.sd.mapmultiengine.ui.ChangeMapCenterAct
import com.sd.mapmultiengine.ui.DisplayMapActivity
import com.sd.mapmultiengine.ui.GestureDemo
import com.sd.mapmultiengine.ui.ShowCarOnlineActivity
import com.sd.mapmultiengine.ui.ShowMyLocLandian
import com.sd.mapmultiengine.ui.TCircelActivity
import com.sd.mapmultiengine.ui.TDriveRouteActivity
......@@ -72,7 +65,7 @@ class MainActivity : AppCompatActivity() {
DemoDetails("定位,获取我的位置", TGpsActivity::class.java),
DemoDetails("驾车路线规划", TDriveRouteActivity::class.java),
DemoDetails("驾车路线规划(导航)", TDriveRouteActivity::class.java),
// DemoDetails("业务相关", null),
......
......@@ -16,6 +16,8 @@ class ShowMyLocLandian : AppCompatActivity() {
private lateinit var binding: ActivityShowMyLocLandianBinding
var mapReadView: MapReadyView? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
......@@ -27,7 +29,8 @@ class ShowMyLocLandian : AppCompatActivity() {
binding.mapMultiView.addMapRenderCallback(object : OnMapReadyLis {
override fun onMapReady(mapReadyView: MapReadyView) {
mapCoreApi.setLocationStyle(mapReadyView)
this@ShowMyLocLandian.mapReadView=mapReadyView
mapCoreApi.setLocationStyle(this@ShowMyLocLandian.mapReadView)
}
})
......
......@@ -30,8 +30,6 @@ class TDriveRouteActivity : AppCompatActivity() {
}
})
//初始化并设置监听
// MSRoutePlans.addPlanLis(onDriveRoute)
//开始规划
binding.starplan.setOnClickListener {
if (mapReadView == null)
......@@ -42,10 +40,10 @@ class TDriveRouteActivity : AppCompatActivity() {
val endPoint = MSLatLng(39.864311, 116.379311)
//// 终点名称
val endName = "沈阳火车站"
var wayPoi = WayPoi().apply {
passName = "鸟巢"
var wayPoi = WayPoi(
passName = "鸟巢",
passPoint = MSLatLng(39.99300, 116.39524)
}
)
var ways = listOf<WayPoi>(wayPoi)
//获取接口功能实例
......@@ -65,17 +63,39 @@ class TDriveRouteActivity : AppCompatActivity() {
// testDriverPlanaMAP()
}
}
//开始导航
binding.starnai.setOnClickListener {
if (mapReadView == null)
return@setOnClickListener
//获取接口功能实例
var mapCoreApi = MapCoreApi.mapCoreApi
//算路结果回调
/* private var onDriveRoute = object : OnDriveRoute {
override fun onDriverRoute(driverRouteBean: DriverRouteBean) {
MSRoutePlans.drawPlanPath(
mapReadView,
driverRouteBean
// 起点坐标 116.3215,39.8919
val startPoint = MSLatLng(39.806898, 116.490682)
//// 终点坐标116.3793,39.8643
val endPoint = MSLatLng(39.864311, 116.379311)
//// 终点名称
val endName = "沈阳火车站"
var wayPoi = WayPoi(
passName = "鸟巢",
passPoint = MSLatLng(39.99300, 116.39524)
)
var ways = listOf<WayPoi>(wayPoi)
mapCoreApi.startNavi(mapReadView, 2, startPoint, "当前位置", endPoint, endName, ways)
}
}*/
}
//算路结果回调
/* private var onDriveRoute = object : OnDriveRoute {
override fun onDriverRoute(driverRouteBean: DriverRouteBean) {
MSRoutePlans.drawPlanPath(
mapReadView,
driverRouteBean
)
}
}*/
}
\ No newline at end of file
......@@ -38,12 +38,10 @@ class TLayersActivity : AppCompatActivity() {
when (checkedId) {
R.id.rb1 -> {//普通
mapCoreApi.toggleLayers(mapReadView, 1)
// MSLayers.changeLayers(mapReadView,1)
}
R.id.rb2 -> {//卫星
mapCoreApi.toggleLayers(mapReadView, 2)
// MSLayers.changeLayers(mapReadView,2)
}
}
}
......
......@@ -4,8 +4,6 @@
android:layout_height="match_parent"
android:orientation="vertical">
<com.sd.maplibrary.ui.MapMultiView
android:id="@+id/mapMultiView"
android:layout_width="match_parent"
......
......@@ -9,14 +9,26 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="北京南站 - 沈阳火车站 途经点鸟巢"/>
android:text="北京南站 - 沈阳火车站 途经点鸟巢" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/starplan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始规划" />
<Button
android:id="@+id/starnai"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始导航" />
</LinearLayout>
<Button
android:id="@+id/starplan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始规划" />
<com.sd.maplibrary.ui.MapMultiView
android:id="@+id/mapMultiView"
......
......@@ -3,6 +3,7 @@ plugins {
alias(libs.plugins.kotlin.android)
id("kotlin-kapt")
// kotlin("jvm") version "2.1.10"
id("kotlin-parcelize")
id("org.jetbrains.dokka") version "2.0.0"
}
......@@ -72,6 +73,7 @@ dependencies {
implementation(libs.androidx.appcompat)
implementation(libs.material)
implementation(libs.androidx.constraintlayout)
implementation(libs.androidx.activity)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
......
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!-- 打开关闭sdcard的权限 -->
<uses-permission
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
......@@ -29,27 +28,27 @@
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<application>
<!-- android:supportsRtl="true">-->
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
<!-- <meta-data-->
<!-- android:name="com.minedata.minenavi.apikey"-->
<!-- android:value="57ac7a0d56494912a0c28e651fa4a40a" />-->
<!-- <meta-data-->
<!-- android:name="com.amap.api.v2.apikey"-->
<!-- android:value="3b7d009011b97dcc3815a93e8ddfcd77" />-->
<!-- 定位需要的服务 使用2.0的定位需要加上这个 -->
<service android:name="com.amap.api.location.APSService" />
<!-- 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" />
<uses-library
android:name="org.apache.http.legacy"
android:required="false" /> <!-- 定位需要的服务 使用2.0的定位需要加上这个 -->
<service android:name="com.amap.api.location.APSService" />
<activity
android:name=".ui.MineNaiDirActivity"
android:exported="false"
android:screenOrientation="landscape" />
<activity
android:name="com.amap.api.navi.AmapRouteActivity"
android:theme="@android:style/Theme.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize|navigation" />
android:configChanges="orientation|keyboardHidden|screenSize|navigation"
android:theme="@android:style/Theme.NoTitleBar" />
</application>
</manifest>
\ No newline at end of file
package com.sd.maplibrary.bean
/**经纬度*/
class MSLatLng {
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
constructor(lat: Double, lng: Double) {
this.lat = lat
this.lng = lng
}
/**经纬度*/
@Parcelize
data class MSLatLng
(
var lat: Double = 0.0,
var lng: Double = 0.0
) : Parcelable
//{
// 纬度
var lat = 0.0
// 经度
var lng = 0.0
}
\ No newline at end of file
// constructor(lat: Double, lng: Double) : this() {
// this.lat = lat
// this.lng = lng
// }
//
// // 纬度
// var lat = 0.0
//
// // 经度
// var lng = 0.0
//}
\ No newline at end of file
package com.sd.maplibrary.bean
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
/**途经点Poi***/
class WayPoi {
@Parcelize
data class WayPoi(
/**途经点名坐标*/
var passPoint: MSLatLng? = null
var passPoint: MSLatLng,
/**经点名字*/
var passName: String
) : Parcelable
/*
{
*/
/**途经点名坐标*//*
var passPoint: MSLatLng? = null
*/
/**经点名字*//*
var passName = ""
}
\ No newline at end of file
}*/
package com.sd.maplibrary.core.basic.amap
import com.amap.api.maps.model.Poi
import com.amap.api.navi.AmapNaviPage
import com.amap.api.navi.AmapNaviParams
import com.amap.api.navi.AmapNaviType
import com.amap.api.navi.AmapPageType
import com.sd.maplibrary.UserCtx
import com.sd.maplibrary.bean.MSLatLng
import com.sd.maplibrary.bean.WayPoi
import com.amap.api.maps.model.LatLng as ALatLng
/**
* 高德导航
*/
object AmapNai {
/**
* 直接开始导航
*
* @param starPoint
* @param startName
* @param endPoint
* @param endName
* @param ways
*/
fun startNavi(
starPoint: MSLatLng,
startName: String,
endPoint: MSLatLng,
endName: String,
ways: List<WayPoi>
) {
var context = UserCtx.instance.mContext
//途经点
var poiList = mutableListOf<Poi>()
if (ways.count() > 0) {
ways.forEach { wpoi ->
poiList.add(
Poi(
wpoi.passName,
ALatLng(wpoi.passPoint!!.lat, wpoi.passPoint!!.lng),
""
)
)
}
}
val params = AmapNaviParams(
Poi(startName, ALatLng(starPoint.lat, starPoint.lng), ""),
poiList,
Poi(endName, ALatLng(endPoint.lat, endPoint.lng), ""),
AmapNaviType.DRIVER, AmapPageType.NAVI
)
params.setUseInnerVoice(true)
AmapNaviPage.getInstance()
.showRouteActivity(context, params, null)
}
/**
* 展示路径规划
*
* @param starPoint
* @param startName
* @param endPoint
* @param endName
* @param ways
*/
fun startPlanNavi(
starPoint: MSLatLng,
startName: String,
endPoint: MSLatLng,
endName: String,
ways: List<WayPoi>
) {
var context = UserCtx.instance.mContext
//途经点
var poiList = mutableListOf<Poi>()
if (ways.count() > 0) {
ways.forEach { wpoi ->
poiList.add(
Poi(
wpoi.passName,
ALatLng(wpoi.passPoint!!.lat, wpoi.passPoint!!.lng),
""
)
)
}
}
val params = AmapNaviParams(
Poi(startName, ALatLng(starPoint.lat, starPoint.lng), ""),
poiList,
Poi(endName, ALatLng(endPoint.lat, endPoint.lng), ""),
AmapNaviType.DRIVER, AmapPageType.ROUTE
)
params.setUseInnerVoice(true)
AmapNaviPage.getInstance()
.showRouteActivity(context, params, null)
}
}
\ No newline at end of file
......@@ -3,12 +3,9 @@ package com.sd.maplibrary.core.basic.amap
import com.amap.api.maps.CameraUpdateFactory
import com.amap.api.maps.model.Poi
import com.amap.api.navi.AMapNavi
import com.amap.api.navi.AmapNaviPage
import com.amap.api.navi.AmapNaviParams
import com.amap.api.navi.AmapNaviType
import com.amap.api.navi.AmapPageType
import com.amap.api.navi.model.AMapCalcRouteResult
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.MSLatLng
......@@ -19,7 +16,11 @@ import com.amap.api.maps.model.LatLng as ALatLng
/**路劲规划**/
object AmapRoutePlans {
class AmapRoutePlans {
companion object {
val instance: AmapRoutePlans by lazy { AmapRoutePlans() }
}
//初始化高德 导航 对象
private var mAMapNavi: AMapNavi? = null
......@@ -28,7 +29,7 @@ object AmapRoutePlans {
private var routeOverlay: RouteOverLay? = null
// private val routeOverlays: SparseArray<RouteOverLay> = SparseArray<RouteOverLay>()
// private var mapReadView: MapReadyView? = null
private var mapReadView: MapReadyView? = null
/**驾车路径规划
......@@ -47,7 +48,7 @@ object AmapRoutePlans {
ways: List<WayPoi>,
mapReadView: MapReadyView?,
) {
// this.mapReadView = mapReadView
this.mapReadView = mapReadView
var context = UserCtx.instance.mContext
mAMapNavi = AMapNavi.getInstance(context)
mAMapNavi!!.addAMapNaviListener(aMapNaviListener)
......@@ -59,7 +60,7 @@ object AmapRoutePlans {
ways.forEach { wpoi ->
poiList.add(
Poi(
"鸟巢",
wpoi.passName,
ALatLng(wpoi.passPoint!!.lat, wpoi.passPoint!!.lng),
""
)
......@@ -67,36 +68,28 @@ object AmapRoutePlans {
}
}
val params = AmapNaviParams(
Poi(startName, ALatLng(starPoint.lat, starPoint.lng), ""),
poiList,
Poi(endName, ALatLng(endPoint.lat, endPoint.lng), ""),
AmapNaviType.DRIVER, AmapPageType.ROUTE
)
params.setUseInnerVoice(true)
AmapNaviPage.getInstance()
.showRouteActivity(context, params, null)
//这是路径规划
/* var startLatlng = NaviLatLng(starPoint.lat, starPoint.lng)
var startList = listOf<NaviLatLng>(startLatlng)
var endLatlng = NaviLatLng(endPoint.lat, endPoint.lng)
var endList = listOf<NaviLatLng>(endLatlng)
//途经点
var wayPoints = mutableListOf<NaviLatLng>()
if (ways.count() > 0) {
ways.forEach { wpoi ->
wayPoints.add(NaviLatLng(wpoi.passPoint!!.lat, wpoi.passPoint!!.lng))
}
}
mAMapNavi?.calculateDriveRoute(
startList,
endList,
wayPoints,
PathPlanningStrategy.DRIVING_MULTIPLE_ROUTES_DEFAULT
)*/
var startLatlng = NaviLatLng(starPoint.lat, starPoint.lng)
var startList = listOf<NaviLatLng>(startLatlng)
var endLatlng = NaviLatLng(endPoint.lat, endPoint.lng)
var endList = listOf<NaviLatLng>(endLatlng)
//途经点
var wayPoints = mutableListOf<NaviLatLng>()
if (ways.count() > 0) {
ways.forEach { wpoi ->
wayPoints.add(NaviLatLng(wpoi.passPoint!!.lat, wpoi.passPoint!!.lng))
}
}
var strategy = mAMapNavi?.strategyConvert(true, false, false, false, false)?:0;
mAMapNavi?.calculateDriveRoute(
startList,
endList,
wayPoints,
strategy
// PathPlanningStrategy.DRIVING_MULTIPLE_ROUTES_DEFAULT
)
}
......@@ -106,7 +99,6 @@ object AmapRoutePlans {
* @param driverRB 包含路线信息的数据对象。
*/
private fun drawPlanPath(
mapReadView: MapReadyView?,
aMapCalcRouteResult: AMapCalcRouteResult?
) {
if (aMapCalcRouteResult == null)
......@@ -147,10 +139,11 @@ object AmapRoutePlans {
//-------------- 高德 导航监听 --------------------------
private var aMapNaviListener = object : MyAMapNaviListener() {
override fun onCalculateRouteSuccess(aMapCalcRouteResult: AMapCalcRouteResult?) {
// 路线规划成功
println("----------onCalculateRouteSuccess")
drawPlanPath(aMapCalcRouteResult)
// mAMapNavi?.startNavi(NaviType.EMULATOR);
}
override fun onCalculateRouteFailure(result: AMapCalcRouteResult?) {
......
......@@ -6,12 +6,12 @@ import com.sd.maplibrary.core.basic.MSLocStyle
/**
* 显示定位小圆点
* 四维显示定位小圆点
*/
object MineLocationStyle {
// 四维初始化定位蓝点样式类
private val myLocationStyle: MyLocationStyle by lazy { MyLocationStyle() }
private val myLocationStyle by lazy { MyLocationStyle() }
/**
* 设置定位蓝点样式
......
package com.sd.maplibrary.core.basic.mine
import android.content.Intent
import android.graphics.Point
import com.minedata.minenavi.map.MineMap
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.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.SmoothNaviData
import com.minedata.minenavi.navi.TmcSections
import com.minedata.minenavi.util.Tools
import com.sd.maplibrary.UserCtx
import com.sd.maplibrary.bean.MSLatLng
import com.sd.maplibrary.bean.WayPoi
import com.sd.maplibrary.core.MapReadyView
import com.sd.maplibrary.intfaces.MyMineNaviListener
import com.sd.maplibrary.intfaces.OnNaviPresenterListener
import com.sd.maplibrary.ui.MineNaiDirActivity
/**
* 四维导航
*/
object MineNai {
//初始化四维导航对象
private var mNaviSession: NaviSession? = null
// 导航小车
private var mMapCar: Model? = null
private var mMineMap: MineMap? = null
/**四维导航监听回调***/
var onNaviPresenterListener: OnNaviPresenterListener? = null
/**
* 开启四维导航 客户端自实现数据回调
*/
fun startNavi(mapReadView: MapReadyView?) {
mNaviSession = NaviSession.getInstance()
mNaviSession?.enableSound(true)
var naviSessionParams = NaviSessionParams().apply {
autoReroute = true
autoRemoveRoute = true
// useMineNaviGPS = true
}
var context = UserCtx.instance.mContext
mNaviSession!!.init(context, naviSessionParams)
mNaviSession?.setDataPreference(DataPreference.preferOnline)
mNaviSession?.addMineNaviListener(myMineNaviListener)
var mRouteBas = MineRoutePlans.mRouteBase
if (mRouteBas != null) {
mMineMap = mapReadView?.mMineMap
// drawNavingCar(MineRoutePlans.mStartPoint)
mNaviSession?.takeRoute(mRouteBas)
}
}
/**
* 直接跳转页面开启导航
*/
fun startNaviDirect(
starPoint: MSLatLng,
startName: String = "当前位置",
endPoint: MSLatLng,
endName: String = "",
ways: List<WayPoi>
) {
var params = MineNaiParams(starPoint, startName, endPoint, endName, ways)
var context = UserCtx.instance.mContext
var inten = Intent(context, MineNaiDirActivity::class.java)
inten.putExtra("mineNaiParams", params)
context?.startActivity(inten)
}
/**
* 添加导航小车
*/
fun drawNavingCar(point: Point) {
if (mMineMap == null) {
return
}
if (mMapCar == null) {
val modelOptions = ModelOptions() // 模型文件相对路径
.objFile("res/3d_car.obj") // 位置
.position(Tools.pointToLatLng(point)) // 图层布局类型
.layer(Overlay.Layer.aboveMarker) // 方向角
.heading(0f) // 保持尺寸的比例尺
.keepScaleSize(8.0f) // 缩放因子
.scaleFactor(0.15f) // 可见性
.visible(true)
mMapCar = mMineMap?.addModel(modelOptions)
}
}
/**
* 移除导航小车
*/
fun deleteNavingCar() {
if (mMineMap != null && mMapCar != null) {
mMineMap?.removeOverlay(mMapCar)
mMapCar!!.release()
mMapCar = null
}
}
//-------------- 四维 导航监听 --------------------------
/**
* 四维 导航监听
*/
private var myMineNaviListener = object : MyMineNaviListener() {
override fun onTracking(data: NaviSessionData) {
super.onTracking(data)
onNaviPresenterListener?.onTracking(data)
}
override fun onSmoothTracking(data: SmoothNaviData) {
super.onSmoothTracking(data)
onNaviPresenterListener?.onSmoothTracking(data)
}
override fun onDataUpdated(naviProgressData: NaviProgressData) {
super.onDataUpdated(naviProgressData)
onNaviPresenterListener?.onDataUpdated(naviProgressData)
}
override fun onTiBarUpdated(tmcSections: TmcSections) {
super.onTiBarUpdated(tmcSections)
onNaviPresenterListener?.onTiBarUpdated(tmcSections)
}
override fun onTextChanged(guidanceText: GuidanceText) {
super.onTextChanged(guidanceText)
onNaviPresenterListener?.onTextChanged(guidanceText)
}
override fun onDistanceChanged(distance: Int) {
super.onDistanceChanged(distance)
onNaviPresenterListener?.onDistanceChanged(distance)
}
override fun onArriveDestination() {
super.onArriveDestination()
onNaviPresenterListener?.onArriveDestination()
}
override fun onNaviEnded() {
super.onNaviEnded()
onNaviPresenterListener?.onNaviEnded()
}
}
}
\ No newline at end of file
package com.sd.maplibrary.core.basic.mine
import android.os.Parcelable
import com.sd.maplibrary.bean.MSLatLng
import com.sd.maplibrary.bean.WayPoi
import kotlinx.parcelize.Parcelize
/**
* 导航参数跳转
*/
@Parcelize
data class MineNaiParams(
val starPoint: MSLatLng,
val startName: String,
val endPoint: MSLatLng,
val endName: String,
val ways: List<WayPoi>
) : Parcelable
package com.sd.maplibrary.core.basic.mine
import android.graphics.Point
import android.graphics.Rect
import com.minedata.minenavi.map.Route
import com.minedata.minenavi.map.RouteOptions
......@@ -41,10 +42,13 @@ object MineRoutePlans {
/**
* 四维保存当前算好的路线
*/
private var mRouteBase: RouteBase? = null
var mRouteBase: RouteBase? = null
private var mapReadView: MapReadyView? = null
/** 路径规划起点*/
var mStartPoint: Point = Point()
/**驾车路径规划
* @param starPoint 起点坐标
......@@ -67,21 +71,21 @@ object MineRoutePlans {
// this.onDriveRoute = onDriveRoute
this.mapReadView = mapReadView
var context = UserCtx.instance.mContext
// var context = UserCtx.instance.mContext
mNaviSession = NaviSession.getInstance()
// 开启语音播报
mNaviSession?.enableSound(true)
var naviSessionParams = NaviSessionParams().apply {
/* var naviSessionParams = NaviSessionParams().apply {
autoReroute = true
autoRemoveRoute = true
// useMineNaviGPS = true
}
mNaviSession!!.init(context, naviSessionParams)
mNaviSession!!.init(context, naviSessionParams)*/
mNaviSession?.setDataPreference(DataPreference.preferOnline)
mNaviSession?.addMineNaviListener(myMineNaviListener)
mNaviSession?.addMineNaviListener(planiListener)
val starPoint = Tools.latLngToPoint(LatLng(starPoint.lat, starPoint.lng))
mStartPoint = Tools.latLngToPoint(LatLng(starPoint.lat, starPoint.lng))
val endPoint = Tools.latLngToPoint(LatLng(endPoint.lat, endPoint.lng))
var startName = startName
var endName = endName
......@@ -98,7 +102,7 @@ object MineRoutePlans {
routePlan.setTransportationType(RoutePlan.TransportationType.car)
mNaviSession?.calculateDriveRoute(
PoiFavorite(starPoint, startName),
PoiFavorite(mStartPoint, startName),
wayPoints,
PoiFavorite(endPoint, endName),
routePlan,
......@@ -115,6 +119,8 @@ object MineRoutePlans {
private fun drawPlanPath(
routeBase: RouteBase?
) {
if (routeBase == null)
return
// 移除旧的路线覆盖物
if (mRoute != null) {
mapReadView?.mMineMap?.removeOverlay(mRoute)
......@@ -145,7 +151,7 @@ object MineRoutePlans {
/**将指定的地图上的矩形区域显示到指定的屏幕矩形区域中
* @param mRouteBase 路线数据
*/
private fun navEndFitWorldAreaToRect(mapReadView: MapReadyView?, mRouteBase: RouteBase?) {
private fun navEndFitWorldAreaToRect(mapReadView: MapReadyView?, mRouteBase: RouteBase?) {
if (mRouteBase == null)
return
val rect = Rect(
......@@ -159,14 +165,14 @@ object MineRoutePlans {
}
/**自定义驾车路线返回*/
interface OnDriveRoute {
fun onDriverRoute(any: Any)
}
// /**自定义驾车路线返回*/
// interface OnDriveRoute {
// fun onDriverRoute(any: Any)
// }
//-------------- 四维 导航监听 --------------------------
private var myMineNaviListener = object : MyMineNaviListener() {
private var planiListener = object : MyMineNaviListener() {
private fun getRouteMsg(data: RouterErrorInfo): String {
var msg = ""
......
......@@ -17,6 +17,7 @@ abstract class AbsMapCore : IMapBasic, IMapBusin {
/**业务接口实现抽象**/
var iMapBusin = MapFactory.createBusin()
//-------------------------基础接口实现抽象----------------------------------
override fun toggleLayers(mapReadView: MapReadyView?, type: Int) {
iMapBasic.toggleLayers(mapReadView, type)
}
......@@ -137,4 +138,21 @@ abstract class AbsMapCore : IMapBasic, IMapBusin {
) {
iMapBasic.drivingPathPlanning(starPoint, startName, endPoint, endName, ways, mapReadView)
}
override fun startNavi(
mapReadView: MapReadyView?,
navType: Int,
starPoint: MSLatLng,
startName: String,
endPoint: MSLatLng,
endName: String,
ways: List<WayPoi>
) {
iMapBasic.startNavi(mapReadView, navType, starPoint, startName, endPoint, endName, ways)
}
//-------------------------基础接口实现抽象----------------------------------
}
\ No newline at end of file
......@@ -12,6 +12,7 @@ import com.sd.maplibrary.core.basic.amap.AmapGestures
import com.sd.maplibrary.core.basic.amap.AmapGpsLocation
import com.sd.maplibrary.core.basic.amap.AmapLocationStyle
import com.sd.maplibrary.core.basic.amap.AmapMethodAdv
import com.sd.maplibrary.core.basic.amap.AmapNai
import com.sd.maplibrary.core.basic.amap.AmapPoiSearch
import com.sd.maplibrary.core.basic.amap.AmapRoutePlans
import com.sd.maplibrary.core.basic.amap.AmapToggleLayers
......@@ -153,7 +154,7 @@ class AmapBasic : IMapBasic {
ways: List<WayPoi>,
mapReadView: MapReadyView?
) {
AmapRoutePlans.drivingPathPlanning(
AmapRoutePlans.instance.drivingPathPlanning(
starPoint,
startName,
endPoint,
......@@ -163,6 +164,23 @@ class AmapBasic : IMapBasic {
)
}
override fun startNavi(
mapReadView: MapReadyView?,
navType: Int,
starPoint: MSLatLng,
startName: String,
endPoint: MSLatLng,
endName: String,
ways: List<WayPoi>
) {
if (navType == 1) {
// throw NoSuchMethodException("高德导航暂不支持自己实现回调")
AmapNai.startPlanNavi(starPoint, startName, endPoint, endName, ways)
} else if (navType == 2) {
AmapNai.startNavi(starPoint, startName, endPoint, endName, ways)
}
}
companion object {
val amapBasic: AmapBasic by lazy { AmapBasic() }
}
......
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