Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
p x
MapMultiEngine
Commits
6b587c56
Commit
6b587c56
authored
Aug 27, 2025
by
p x
Browse files
实现UML设计
parent
f8483b51
Changes
29
Hide whitespace changes
Inline
Side-by-side
app/src/main/java/com/sd/mapmultiengine/MainActivity.kt
View file @
6b587c56
...
@@ -135,7 +135,7 @@ class MainActivity : AppCompatActivity() {
...
@@ -135,7 +135,7 @@ class MainActivity : AppCompatActivity() {
*
*
* @param type MINE=四维 AMAP=高德
* @param type MINE=四维 AMAP=高德
*/
*/
fun
initMap
(
type
:
MAP_TYPE
=
MAP_TYPE
.
AMAP
)
{
fun
initMap
(
type
:
MAP_TYPE
=
MAP_TYPE
.
MINE
)
{
MSDKInitializer
.
initializeMap
(
this
,
type
,
object
:
OnSdkInitCb
{
MSDKInitializer
.
initializeMap
(
this
,
type
,
object
:
OnSdkInitCb
{
override
fun
onInitSuccess
()
{
override
fun
onInitSuccess
()
{
println
(
"--------onMapInitSuccess"
)
println
(
"--------onMapInitSuccess"
)
...
...
app/src/main/java/com/sd/mapmultiengine/ui/TDriveRouteActivity.kt
View file @
6b587c56
...
@@ -27,14 +27,13 @@ import com.minedata.minenavi.navi.RouterErrorInfo
...
@@ -27,14 +27,13 @@ import com.minedata.minenavi.navi.RouterErrorInfo
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
import
com.sd.maplibrary.MAP_TYPE
import
com.sd.maplibrary.MSDKInitializer
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.MSRoutePlans
//
import com.sd.maplibrary.core.MSRoutePlans
import
com.sd.maplibrary.core.MSRoutePlans.OnDriveRoute
//
import com.sd.maplibrary.core.MSRoutePlans.OnDriveRoute
import
com.sd.maplibrary.core.MapReadyView
import
com.sd.maplibrary.core.MapReadyView
import
com.sd.maplibrary.factorys.MapFactory
import
com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
import
com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
import
com.sd.mapmultiengine.databinding.ActivityTdriveRouteBinding
import
com.sd.mapmultiengine.databinding.ActivityTdriveRouteBinding
import
com.amap.api.services.core.LatLonPoint
as
ALatLonPoint
import
com.amap.api.services.core.LatLonPoint
as
ALatLonPoint
...
@@ -59,7 +58,7 @@ class TDriveRouteActivity : AppCompatActivity() {
...
@@ -59,7 +58,7 @@ class TDriveRouteActivity : AppCompatActivity() {
})
})
//初始化并设置监听
//初始化并设置监听
MSRoutePlans
.
addPlanLis
(
onDriveRoute
)
//
MSRoutePlans.addPlanLis(onDriveRoute)
//开始规划
//开始规划
binding
.
starplan
.
setOnClickListener
{
binding
.
starplan
.
setOnClickListener
{
if
(
mapReadView
==
null
)
if
(
mapReadView
==
null
)
...
@@ -75,8 +74,19 @@ class TDriveRouteActivity : AppCompatActivity() {
...
@@ -75,8 +74,19 @@ class TDriveRouteActivity : AppCompatActivity() {
passPoint
=
MSLatLng
(
39.99300
,
116.39524
)
passPoint
=
MSLatLng
(
39.99300
,
116.39524
)
}
}
var
ways
=
listOf
<
WayPoi
>(
wayPoi
)
var
ways
=
listOf
<
WayPoi
>(
wayPoi
)
//获取基础功能实例
var
basicMap
=
MapFactory
.
createBasic
()
//开始路径规划
//开始路径规划
MSRoutePlans
.
drivingPathPlanning
(
startPoint
,
endPoint
,
ways
,
endName
)
basicMap
.
drivingPathPlanning
(
startPoint
,
"当前位置"
,
endPoint
,
endName
,
ways
,
mapReadView
)
// MSRoutePlans.drivingPathPlanning(startPoint, endPoint, ways, endName)
// testDriverPlan()
// testDriverPlan()
// testDriverPlanaMAP()
// testDriverPlanaMAP()
...
@@ -85,244 +95,14 @@ class TDriveRouteActivity : AppCompatActivity() {
...
@@ -85,244 +95,14 @@ class TDriveRouteActivity : AppCompatActivity() {
}
}
//算路结果回调
//算路结果回调
private
var
onDriveRoute
=
object
:
OnDriveRoute
{
/*
private var onDriveRoute = object : OnDriveRoute {
override fun onDriverRoute(driverRouteBean: DriverRouteBean) {
override fun onDriverRoute(driverRouteBean: DriverRouteBean) {
MSRoutePlans.drawPlanPath(
MSRoutePlans.drawPlanPath(
mapReadView,
mapReadView,
driverRouteBean
driverRouteBean
)
)
}
}
}
}*/
private
fun
setRouteOverlayStyle
(
route
:
Route
?,
isSmallMapRoute
:
Boolean
)
{
var
routeStyle
=
"DEFAULT"
if
(
isSmallMapRoute
)
{
routeStyle
+=
",small-map"
}
route
?.
selectStyleClass
(
routeStyle
)
}
lateinit
var
mNaviSession
:
NaviSession
private
fun
testDriverPlan
()
{
mNaviSession
=
NaviSession
.
getInstance
()
mNaviSession
.
enableSound
(
true
)
// mNaviSession.setDataPreference(DataPreference.preferOnline)
mNaviSession
.
addMineNaviListener
(
mineNaviListener
)
// 起点名称
val
startName
=
""
var
mStartPoint
=
Tools
.
latLngToPoint
(
LatLng
(
41.8194611
,
123.4358811
))
// 终点名称
val
endName
=
"北京奥利匹克公园"
var
mEndPoint
=
Tools
.
latLngToPoint
(
LatLng
(
39.9923712
,
116.392522
))
val
newstartPoint
=
PoiFavorite
(
mStartPoint
,
startName
)
val
newendPoint
=
PoiFavorite
(
mEndPoint
,
endName
)
val
wayPoints
=
ArrayList
<
PoiFavorite
>()
val
routePlan
=
RoutePlan
()
// 设置算路偏好
routePlan
.
setRoutePreference
(
RoutePlan
.
RoutePreference
.
none
)
// crp 算路
routePlan
.
setRouteServerType
(
RoutePlan
.
RouteServiceType
.
crp
)
mNaviSession
.
calculateDriveRoute
(
newstartPoint
,
wayPoints
,
newendPoint
,
routePlan
,
NaviSession
.
RouteMethod
.
multipleResult
)
}
var
mineNaviListener
=
object
:
MineNaviListener
{
override
fun
onCalculateRouteSuccess
(
p0
:
RouteCollection
?)
{
var
a
=
0
println
(
"---算路成功"
)
}
override
fun
onCalculateBusSuccess
(
p0
:
List
<
BusRoute
?
>?)
{
}
override
fun
onCalculateRouteFailed
(
p0
:
RouterErrorInfo
?)
{
var
b
=
0
println
(
"---算路失败 p0?.errCode = ${p0?.errCode}"
)
}
override
fun
onCalculateVrpSuccess
(
p0
:
List
<
PoiFavorite
?
>?)
{
}
override
fun
onArriveDestination
()
{
}
override
fun
onWayPointArrived
(
p0
:
Int
)
{
}
override
fun
onNewArrow
(
p0
:
ArrowInfo
?)
{
}
override
fun
onDeleteArrow
()
{
}
override
fun
onNewRouteTaken
(
data
:
RouteBase
?)
{
}
override
fun
onRouteRemoved
()
{
}
override
fun
onNeedsReroute
()
{
}
override
fun
onRerouteCancelled
()
{
}
override
fun
onRerouteComplete
(
p0
:
RouteBase
?)
{
}
override
fun
onRerouteFailed
(
p0
:
RouterErrorInfo
?)
{
}
override
fun
onRerouteStarted
()
{
}
override
fun
onRouteCancelled
()
{
}
override
fun
onRouteStarted
()
{
}
override
fun
onRouting
()
{
}
override
fun
onNaviBegin
(
data
:
RouteBase
?)
{
}
override
fun
onNaviEnded
()
{
}
override
fun
onSimNaviBegin
(
data
:
RouteBase
?)
{
}
override
fun
onSimNaviPaused
(
data
:
RouteBase
?)
{
}
override
fun
onSimNaviResumed
(
data
:
RouteBase
?)
{
}
override
fun
onSimNaviEnd
(
data
:
RouteBase
?)
{
}
override
fun
onTracking
(
p0
:
NaviSessionData
?)
{
}
override
fun
onSmoothTracking
(
p0
:
SmoothNaviData
?)
{
}
override
fun
onDataUpdated
(
p0
:
NaviProgressData
?)
{
}
override
fun
onTextChanged
(
p0
:
GuidanceText
?)
{
}
override
fun
onDistanceChanged
(
p0
:
Int
)
{
}
override
fun
onTiBarUpdated
(
p0
:
TmcSections
?)
{
}
override
fun
onRouteTmcUpdated
(
p0
:
RouteBase
?)
{
}
override
fun
onRouteTeUpdated
(
p0
:
RouteBase
?)
{
}
override
fun
onRouteBriefRequestSucceeded
(
p0
:
RouteBriefQuerier
.
RouteBrief
?)
{
}
override
fun
onRouteBriefRequestFailed
(
p0
:
Int
,
p1
:
String
?)
{
}
override
fun
onRouteBriefRequestCancelled
()
{
}
};
private
var
mStartPoint
=
ALatLonPoint
(
39.942295
,
116.335891
)
//起点,39.942295,116.335891
private
var
mEndPoint
=
ALatLonPoint
(
39.995576
,
116.481288
)
//终点,39.995576,116.481288
private
fun
testDriverPlanaMAP
()
{
var
mRouteSearch
=
RouteSearch
(
this
)
mRouteSearch
.
setRouteSearchListener
(
ppp
);
val
fromAndTo
=
RouteSearch
.
FromAndTo
(
mStartPoint
,
mEndPoint
)
val
query
=
DriveRouteQuery
(
fromAndTo
,
RouteSearch
.
DrivingDefault
,
null
,
null
,
""
)
// 第一个参数表示路径规划的起点和终点,第二个参数表示驾车模式,第三个参数表示途经点,第四个参数表示避让区域,第五个参数表示避让道路
mRouteSearch
.
calculateDriveRouteAsyn
(
query
)
// 异步路径规划驾车模式查询
}
private
var
ppp
=
object
:
OnRouteSearchListener
{
override
fun
onBusRouteSearched
(
p0
:
BusRouteResult
?,
p1
:
Int
)
{
}
override
fun
onDriveRouteSearched
(
p0
:
DriveRouteResult
?,
p1
:
Int
)
{
println
(
" ---高德成功"
)
}
override
fun
onWalkRouteSearched
(
p0
:
WalkRouteResult
?,
p1
:
Int
)
{
}
override
fun
onRideRouteSearched
(
p0
:
RideRouteResult
?,
p1
:
Int
)
{
}
}
}
}
\ No newline at end of file
app/src/main/java/com/sd/mapmultiengine/ui/TLayersActivity.kt
View file @
6b587c56
...
@@ -3,9 +3,8 @@ package com.sd.mapmultiengine.ui
...
@@ -3,9 +3,8 @@ package com.sd.mapmultiengine.ui
import
android.os.Bundle
import
android.os.Bundle
import
androidx.appcompat.app.AppCompatActivity
import
androidx.appcompat.app.AppCompatActivity
import
com.sd.maplibrary.core.MSLayers
import
com.sd.maplibrary.core.MSMethodAdv
import
com.sd.maplibrary.core.MapReadyView
import
com.sd.maplibrary.core.MapReadyView
import
com.sd.maplibrary.factorys.MapFactory
import
com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
import
com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
import
com.sd.mapmultiengine.R
import
com.sd.mapmultiengine.R
import
com.sd.mapmultiengine.databinding.ActivityTlayersBinding
import
com.sd.mapmultiengine.databinding.ActivityTlayersBinding
...
@@ -32,13 +31,19 @@ class TLayersActivity : AppCompatActivity() {
...
@@ -32,13 +31,19 @@ class TLayersActivity : AppCompatActivity() {
}
}
})
})
//获取基础功能实例
var
basicMap
=
MapFactory
.
createBasic
()
binding
.
rg
.
setOnCheckedChangeListener
{
group
,
checkedId
->
binding
.
rg
.
setOnCheckedChangeListener
{
group
,
checkedId
->
when
(
checkedId
)
{
when
(
checkedId
)
{
R
.
id
.
rb1
->
{
//普通
R
.
id
.
rb1
->
{
//普通
MSLayers
.
changeLayers
(
mapReadView
,
1
)
basicMap
.
toggleLayers
(
mapReadView
,
1
)
// MSLayers.changeLayers(mapReadView,1)
}
}
R
.
id
.
rb2
->
{
//卫星
R
.
id
.
rb2
->
{
//卫星
MSLayers
.
changeLayers
(
mapReadView
,
2
)
basicMap
.
toggleLayers
(
mapReadView
,
2
)
// MSLayers.changeLayers(mapReadView,2)
}
}
}
}
}
}
...
...
build.gradle.kts
View file @
6b587c56
...
@@ -10,4 +10,16 @@ plugins {
...
@@ -10,4 +10,16 @@ plugins {
alias
(
libs
.
plugins
.
android
.
application
)
apply
false
alias
(
libs
.
plugins
.
android
.
application
)
apply
false
alias
(
libs
.
plugins
.
kotlin
.
android
)
apply
false
alias
(
libs
.
plugins
.
kotlin
.
android
)
apply
false
alias
(
libs
.
plugins
.
android
.
library
)
apply
false
alias
(
libs
.
plugins
.
android
.
library
)
apply
false
}
}
\ No newline at end of file
//tasks.register<Jar>("dokkaHtmlJar") {
// dependsOn(tasks.dokkaHtml)
// from(tasks.dokkaHtml.flatMap { it.outputDirectory })
// archiveClassifier.set("html-docs")
//}
//
//tasks.register<Jar>("dokkaJavadocJar") {
// dependsOn(tasks.dokkaJavadoc)
// from(tasks.dokkaJavadoc.flatMap { it.outputDirectory })
// archiveClassifier.set("javadoc")
//}
\ No newline at end of file
gradle.properties
View file @
6b587c56
...
@@ -24,4 +24,4 @@ android.nonTransitiveRClass=true
...
@@ -24,4 +24,4 @@ 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
\ No newline at end of file
maplibrary/build.gradle.kts
View file @
6b587c56
...
@@ -40,9 +40,10 @@ android {
...
@@ -40,9 +40,10 @@ android {
}
}
// dokka {
// dokka {
// outputFormat = 'javadoc'
// outputFormat = 'javadoc'
// outputDirectory = "$buildDir/dokka"
// outputDirectory = "$buildDir/dokka"
//
// configuration {
// configuration {
// // Do not output deprecated members
// // Do not output deprecated members
// skipDeprecated = true
// skipDeprecated = true
...
@@ -75,7 +76,10 @@ dependencies {
...
@@ -75,7 +76,10 @@ dependencies {
androidTestImplementation
(
libs
.
androidx
.
junit
)
androidTestImplementation
(
libs
.
androidx
.
junit
)
androidTestImplementation
(
libs
.
androidx
.
espresso
.
core
)
androidTestImplementation
(
libs
.
androidx
.
espresso
.
core
)
//文档插件库
//文档插件库
// implementation(libs.android.documentation.plugin)
// 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("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")
...
...
maplibrary/src/main/java/com/sd/maplibrary/bean/DriverRouteBean.kt
View file @
6b587c56
...
@@ -12,7 +12,7 @@ class DriverRouteBean {
...
@@ -12,7 +12,7 @@ class DriverRouteBean {
val
instance
:
DriverRouteBean
by
lazy
{
DriverRouteBean
()
}
val
instance
:
DriverRouteBean
by
lazy
{
DriverRouteBean
()
}
}
}
/
/四维
/
**四维路径规划返回*/
var
routeCollection
:
RouteCollection
?
=
null
var
routeCollection
:
RouteCollection
?
=
null
//高德
//高德
...
...
maplibrary/src/main/java/com/sd/maplibrary/core/MSRoutePlans.kt
View file @
6b587c56
package
com.sd.maplibrary.core
package
com.sd.maplibrary.core
import
android.content.Context
import
android.graphics.Rect
import
android.graphics.Rect
import
com.amap.api.maps.CameraUpdateFactory
import
com.amap.api.maps.CameraUpdateFactory
import
com.amap.api.maps.model.Poi
import
com.amap.api.maps.model.Poi
...
@@ -9,10 +8,8 @@ import com.amap.api.navi.AmapNaviPage
...
@@ -9,10 +8,8 @@ import com.amap.api.navi.AmapNaviPage
import
com.amap.api.navi.AmapNaviParams
import
com.amap.api.navi.AmapNaviParams
import
com.amap.api.navi.AmapNaviType
import
com.amap.api.navi.AmapNaviType
import
com.amap.api.navi.AmapPageType
import
com.amap.api.navi.AmapPageType
import
com.amap.api.navi.enums.PathPlanningStrategy
import
com.amap.api.navi.model.AMapCalcRouteResult
import
com.amap.api.navi.model.AMapCalcRouteResult
import
com.amap.api.navi.model.AMapNaviPath
import
com.amap.api.navi.model.AMapNaviPath
import
com.amap.api.navi.model.NaviLatLng
import
com.amap.api.navi.view.RouteOverLay
import
com.amap.api.navi.view.RouteOverLay
import
com.minedata.minenavi.map.Route
import
com.minedata.minenavi.map.Route
import
com.minedata.minenavi.map.RouteOptions
import
com.minedata.minenavi.map.RouteOptions
...
@@ -38,7 +35,11 @@ import com.sd.maplibrary.utils.DisplayUtil
...
@@ -38,7 +35,11 @@ import com.sd.maplibrary.utils.DisplayUtil
import
com.amap.api.maps.model.LatLng
as
ALatLng
import
com.amap.api.maps.model.LatLng
as
ALatLng
/****路劲规划***/
/**路劲规划 弃用**/
@Deprecated
(
message
=
"弃用 直接使用var basicMap = MapFactory.createBasic()\n"
+
" basicMap.drivingPathPlanning()"
)
object
MSRoutePlans
{
object
MSRoutePlans
{
//初始化高德 RouteSearch 对象
//初始化高德 RouteSearch 对象
// private var mRouteSearch: RouteSearch? = null
// private var mRouteSearch: RouteSearch? = null
...
@@ -74,7 +75,7 @@ object MSRoutePlans {
...
@@ -74,7 +75,7 @@ object MSRoutePlans {
* @param onDriveRoute 导航路线回调接口
* @param onDriveRoute 导航路线回调接口
*/
*/
fun
addPlanLis
(
onDriveRoute
:
OnDriveRoute
)
{
fun
addPlanLis
(
onDriveRoute
:
OnDriveRoute
)
{
var
context
=
UserCtx
.
instance
.
mContext
var
context
=
UserCtx
.
instance
.
mContext
this
.
onDriveRoute
=
onDriveRoute
this
.
onDriveRoute
=
onDriveRoute
// 根据地图类型初始化不同的导航引擎
// 根据地图类型初始化不同的导航引擎
...
@@ -149,44 +150,50 @@ object MSRoutePlans {
...
@@ -149,44 +150,50 @@ object MSRoutePlans {
MAP_TYPE
.
AMAP
->
{
MAP_TYPE
.
AMAP
->
{
//这是路径规划
//这是路径规划
var
startLatlng
=
NaviLatLng
(
starPoint
.
lat
,
starPoint
.
lng
)
/* var startLatlng = NaviLatLng(starPoint.lat, starPoint.lng)
var
startList
=
listOf
<
NaviLatLng
>(
startLatlng
)
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
endLatlng
=
NaviLatLng
(
endPoint
.
lat
,
endPoint
.
lng
)
//这是导航,直接到高德内置组件
var
endList
=
listOf
<
NaviLatLng
>(
endLatlng
)
//途经点
//途经点
var
wayPoints
=
mutableListOf
<
NaviLatLng
>()
var
poiList
=
mutableListOf
<
Poi
>()
if
(
ways
.
count
()
>
0
)
{
if
(
ways
.
count
()
>
0
)
{
ways
.
forEach
{
wpoi
->
ways
.
forEach
{
wpoi
->
wayPoints
.
add
(
NaviLatLng
(
wpoi
.
passPoint
!!
.
lat
,
wpoi
.
passPoint
!!
.
lng
))
poiList
.
add
(
Poi
(
"鸟巢"
,
ALatLng
(
wpoi
.
passPoint
!!
.
lat
,
wpoi
.
passPoint
!!
.
lng
),
""
)
)
}
}
}
}
mAMapNavi
?.
calculateDriveRoute
(
val
params
=
AmapNaviParams
(
start
List
,
Poi
(
start
Name
,
ALatLng
(
starPoint
.
lat
,
starPoint
.
lng
),
""
)
,
end
List
,
poi
List
,
wayPoints
,
Poi
(
endName
,
ALatLng
(
endPoint
.
lat
,
endPoint
.
lng
),
""
)
,
PathPlanningStrategy
.
DRIVING_MULTIPLE_ROUTES_DEFAULT
AmapNaviType
.
DRIVER
,
AmapPageType
.
ROUTE
)
)
params
.
setUseInnerVoice
(
true
)
//这是导航,直接到高德内置组件
AmapNaviPage
.
getInstance
()
//途经点
.
showRouteActivity
(
context
,
params
,
null
)
/* var poiList = mutableListOf<Poi>()
if (ways.count() > 0) {
ways.forEach { wpoi ->
poiList.add(Poi("鸟巢", 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)*/
}
}
}
}
}
}
...
@@ -197,57 +204,57 @@ object MSRoutePlans {
...
@@ -197,57 +204,57 @@ object MSRoutePlans {
}
}
/**
/**
* 绘制规划的路线路径。
* 绘制规划的路线路径。
* @param mapReadView 地图视图容器,用于获取当前地图实例。
* @param mapReadView 地图视图容器,用于获取当前地图实例。
* @param driverRB 包含路线信息的数据对象。
* @param driverRB 包含路线信息的数据对象。
*/
*/
fun
drawPlanPath
(
fun
drawPlanPath
(
mapReadView
:
MapReadyView
?,
mapReadView
:
MapReadyView
?,
driverRB
:
DriverRouteBean
driverRB
:
DriverRouteBean
)
{
)
{
var
context
=
UserCtx
.
instance
.
mContext
var
context
=
UserCtx
.
instance
.
mContext
when
(
MSDKInitializer
.
getMapType
())
{
when
(
MSDKInitializer
.
getMapType
())
{
MAP_TYPE
.
MINE
->
{
MAP_TYPE
.
MINE
->
{
// 移除旧的路线覆盖物
// 移除旧的路线覆盖物
if
(
mRoute
!=
null
)
{
if
(
mRoute
!=
null
)
{
mapReadView
?.
mMineMap
?.
removeOverlay
(
mRoute
)
mapReadView
?.
mMineMap
?.
removeOverlay
(
mRoute
)
mRoute
=
null
mRoute
=
null
}
}
// 获取第一条路线数据并设置路线绘制选项
var
routeBase
=
driverRB
.
routeCollection
?.
routes
?.
get
(
0
)
val
options
=
RouteOptions
()
.
routeBase
(
routeBase
)
.
colorType
(
Route
.
RouteColorType
.
enrouteTi
)
.
styleClass
(
"DEFAULT"
)
// 添加新的路线到地图上,并设置样式和视角适配
mRoute
=
mapReadView
?.
mMineMap
?.
addRoute
(
options
)
setRouteOverlayStyle
(
mRoute
,
false
)
navEndFitWorldAreaToRect
(
mapReadView
,
routeBase
)
}
MAP_TYPE
.
AMAP
->
{
// 获取第一条路线数据并设置路线绘制选项
// 清除之前的路线覆盖物
var
routeBase
=
driverRB
.
routeCollection
?.
routes
?.
get
(
0
)
if
(
routeOverlay
!=
null
)
{
val
options
=
RouteOptions
()
routeOverlay
?.
removeFromMap
()
.
routeBase
(
routeBase
)
routeOverlay
=
null
.
colorType
(
Route
.
RouteColorType
.
enrouteTi
)
.
styleClass
(
"DEFAULT"
)
// 添加新的路线到地图上,并设置样式和视角适配
mRoute
=
mapReadView
?.
mMineMap
?.
addRoute
(
options
)
setRouteOverlayStyle
(
mRoute
,
false
)
navEndFitWorldAreaToRect
(
mapReadView
,
routeBase
)
}
}
// 从导航结果中获取路径信息并在高德地图上绘制
MAP_TYPE
.
AMAP
->
{
val
routeIds
=
driverRB
.
aMapCalcRouteResult
!!
.
getRouteid
()
// 清除之前的路线覆盖物
val
paths
:
HashMap
<
Int
,
AMapNaviPath
>
=
mAMapNavi
!!
.
getNaviPaths
()
if
(
routeOverlay
!=
null
)
{
val
path
:
AMapNaviPath
?
=
paths
.
get
(
routeIds
[
0
])
routeOverlay
?.
removeFromMap
()
if
(
path
!=
null
)
{
routeOverlay
=
null
mapReadView
?.
aMap
?.
moveCamera
(
CameraUpdateFactory
.
changeTilt
(
0f
))
}
routeOverlay
=
RouteOverLay
(
mapReadView
?.
aMap
,
path
,
context
)
routeOverlay
?.
setTrafficLine
(
false
)
// 从导航结果中获取路径信息并在高德地图上绘制
routeOverlay
?.
addToMap
()
val
routeIds
=
driverRB
.
aMapCalcRouteResult
!!
.
getRouteid
()
val
paths
:
HashMap
<
Int
,
AMapNaviPath
>
=
mAMapNavi
!!
.
getNaviPaths
()
val
path
:
AMapNaviPath
?
=
paths
.
get
(
routeIds
[
0
])
if
(
path
!=
null
)
{
mapReadView
?.
aMap
?.
moveCamera
(
CameraUpdateFactory
.
changeTilt
(
0f
))
routeOverlay
=
RouteOverLay
(
mapReadView
?.
aMap
,
path
,
context
)
routeOverlay
?.
setTrafficLine
(
false
)
routeOverlay
?.
addToMap
()
}
}
}
}
}
}
}
}
// private fun drawRoutes(
// private fun drawRoutes(
...
...
maplibrary/src/main/java/com/sd/maplibrary/core/MShowMainCarModel.kt
View file @
6b587c56
...
@@ -2,9 +2,6 @@ package com.sd.maplibrary.core
...
@@ -2,9 +2,6 @@ package com.sd.maplibrary.core
import
android.content.Context
import
android.content.Context
import
android.util.Log
import
android.util.Log
import
androidx.lifecycle.viewModelScope
import
com.amap.api.maps.AMapUtils
import
com.amap.api.maps.model.LatLng
as
ALatLng
import
com.minedata.minenavi.map.Model
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
...
@@ -13,7 +10,7 @@ import com.sd.maplibrary.MAP_TYPE
...
@@ -13,7 +10,7 @@ import com.sd.maplibrary.MAP_TYPE
import
com.sd.maplibrary.MSDKInitializer
import
com.sd.maplibrary.MSDKInitializer
import
com.sd.maplibrary.bean.MSLatLng
import
com.sd.maplibrary.bean.MSLatLng
import
com.sd.maplibrary.utils.SmoothMoveUtils
import
com.sd.maplibrary.utils.SmoothMoveUtils
import
com.sd.
shupathwebview
.utils.FileIoUtils
import
com.sd.
maplibrary
.utils.FileIoUtils
import
kotlinx.coroutines.CoroutineScope
import
kotlinx.coroutines.CoroutineScope
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.Dispatchers
import
kotlinx.coroutines.launch
import
kotlinx.coroutines.launch
...
...
maplibrary/src/main/java/com/sd/maplibrary/core/basic/amap/AmapRoutePlans.kt
0 → 100644
View file @
6b587c56
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.view.RouteOverLay
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.MyAMapNaviListener
import
com.amap.api.maps.model.LatLng
as
ALatLng
/**路劲规划**/
object
AmapRoutePlans
{
//初始化高德 导航 对象
private
var
mAMapNavi
:
AMapNavi
?
=
null
//高德保存当前算好的路线
private
var
routeOverlay
:
RouteOverLay
?
=
null
// private val routeOverlays: SparseArray<RouteOverLay> = SparseArray<RouteOverLay>()
// private var mapReadView: MapReadyView? = null
/**驾车路径规划
* @param starPoint 起点坐标
* @param startName 起点名称
* @param endPoint 终点坐标
* @param endName 终点名称(高德可不传)
* @param ways 途经点集合
* @param mapReadView 地图对象
*/
fun
drivingPathPlanning
(
starPoint
:
MSLatLng
,
startName
:
String
=
"当前位置"
,
endPoint
:
MSLatLng
,
endName
:
String
=
""
,
ways
:
List
<
WayPoi
>,
mapReadView
:
MapReadyView
?,
)
{
// this.mapReadView = mapReadView
var
context
=
UserCtx
.
instance
.
mContext
mAMapNavi
=
AMapNavi
.
getInstance
(
context
)
mAMapNavi
!!
.
addAMapNaviListener
(
aMapNaviListener
)
//这是导航,直接到高德内置组件
//途经点
var
poiList
=
mutableListOf
<
Poi
>()
if
(
ways
.
count
()
>
0
)
{
ways
.
forEach
{
wpoi
->
poiList
.
add
(
Poi
(
"鸟巢"
,
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
)
//这是路径规划
/* 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
)*/
}
/**
* 绘制规划的路线路径。
* @param mapReadView 地图视图容器,用于获取当前地图实例。
* @param driverRB 包含路线信息的数据对象。
*/
private
fun
drawPlanPath
(
mapReadView
:
MapReadyView
?,
aMapCalcRouteResult
:
AMapCalcRouteResult
?
)
{
if
(
aMapCalcRouteResult
==
null
)
return
var
context
=
UserCtx
.
instance
.
mContext
// 清除之前的路线覆盖物
if
(
routeOverlay
!=
null
)
{
routeOverlay
?.
removeFromMap
()
routeOverlay
=
null
}
// 从导航结果中获取路径信息并在高德地图上绘制
val
routeIds
=
aMapCalcRouteResult
!!
.
getRouteid
()
val
paths
:
HashMap
<
Int
,
AMapNaviPath
>
=
mAMapNavi
!!
.
getNaviPaths
()
val
path
:
AMapNaviPath
?
=
paths
.
get
(
routeIds
[
0
])
if
(
path
!=
null
)
{
mapReadView
?.
aMap
?.
moveCamera
(
CameraUpdateFactory
.
changeTilt
(
0f
))
routeOverlay
=
RouteOverLay
(
mapReadView
?.
aMap
,
path
,
context
)
routeOverlay
?.
setTrafficLine
(
false
)
routeOverlay
?.
addToMap
()
}
}
// private fun drawRoutes(
// routeId: Int,
// path: AMapNaviPath,
// mapReadView: MapReadyView?,
// context: Context
// ) {
// mapReadView?.aMap?.moveCamera(CameraUpdateFactory.changeTilt(0f))
// routeOverLay = RouteOverLay(mapReadView?.aMap, path, context)
// routeOverLay.setTrafficLine(false)
// routeOverLay.addToMap()
//// routeOverlays.put(routeId, routeOverLay)
// }
//-------------- 高德 导航监听 --------------------------
private
var
aMapNaviListener
=
object
:
MyAMapNaviListener
()
{
override
fun
onCalculateRouteSuccess
(
aMapCalcRouteResult
:
AMapCalcRouteResult
?)
{
// 路线规划成功
println
(
"----------onCalculateRouteSuccess"
)
}
override
fun
onCalculateRouteFailure
(
result
:
AMapCalcRouteResult
?)
{
}
}
}
\ No newline at end of file
maplibrary/src/main/java/com/sd/maplibrary/core/basic/amap/AmapToggleLayers.kt
0 → 100644
View file @
6b587c56
package
com.sd.maplibrary.core.basic.amap
import
com.amap.api.maps.AMap
import
com.sd.maplibrary.core.MapReadyView
/**
*高德切换底图图层
*/
object
AmapToggleLayers
{
fun
toggleLayers
(
mapReadView
:
MapReadyView
?,
type
:
Int
)
{
when
(
type
)
{
1
->
{
mapReadView
?.
aMap
?.
setMapType
(
AMap
.
MAP_TYPE_NORMAL
)
}
2
->
{
mapReadView
?.
aMap
?.
setMapType
(
AMap
.
MAP_TYPE_SATELLITE
)
}
}
}
}
\ No newline at end of file
maplibrary/src/main/java/com/sd/maplibrary/core/basic/mine/MineRoutePlans.kt
0 → 100644
View file @
6b587c56
package
com.sd.maplibrary.core.basic.mine
import
android.graphics.Rect
import
com.minedata.minenavi.map.Route
import
com.minedata.minenavi.map.RouteOptions
import
com.minedata.minenavi.mapdal.DataPreference
import
com.minedata.minenavi.mapdal.LatLng
import
com.minedata.minenavi.mapdal.PoiFavorite
import
com.minedata.minenavi.navi.NaviSession
import
com.minedata.minenavi.navi.NaviSessionParams
import
com.minedata.minenavi.navi.RouteBase
import
com.minedata.minenavi.navi.RouteCollection
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.MSLatLng
import
com.sd.maplibrary.bean.WayPoi
import
com.sd.maplibrary.core.MapReadyView
import
com.sd.maplibrary.intfaces.MyMineNaviListener
import
com.sd.maplibrary.utils.DisplayUtil
/**四维路劲规划*/
object
MineRoutePlans
{
//初始化四维导航对象
private
var
mNaviSession
:
NaviSession
?
=
null
//驾车算路回调对象
// private var driverRouteBean = DriverRouteBean.instance
//驾车路径规划回调接口
// private var onDriveRoute: OnDriveRoute? = null
/**
* 路线图层
*/
private
var
mRoute
:
Route
?
=
null
/**
* 四维保存当前算好的路线
*/
private
var
mRouteBase
:
RouteBase
?
=
null
private
var
mapReadView
:
MapReadyView
?
=
null
/**驾车路径规划
* @param starPoint 起点坐标
* @param startName 起点名称
* @param endPoint 终点坐标
* @param endName 终点名称(高德可不传)
* @param ways 途经点集合
* @param mapReadView 地图对象
* @param onDriveRoute 路径规划结果回调
*/
fun
drivingPathPlanning
(
starPoint
:
MSLatLng
,
startName
:
String
=
"当前位置"
,
endPoint
:
MSLatLng
,
endName
:
String
=
""
,
ways
:
List
<
WayPoi
>,
mapReadView
:
MapReadyView
?,
// onDriveRoute: MineRoutePlans.OnDriveRoute
)
{
// this.onDriveRoute = onDriveRoute
this
.
mapReadView
=
mapReadView
var
context
=
UserCtx
.
instance
.
mContext
mNaviSession
=
NaviSession
.
getInstance
()
// 开启语音播报
mNaviSession
?.
enableSound
(
true
)
var
naviSessionParams
=
NaviSessionParams
().
apply
{
autoReroute
=
true
autoRemoveRoute
=
true
// useMineNaviGPS = true
}
mNaviSession
!!
.
init
(
context
,
naviSessionParams
)
mNaviSession
?.
setDataPreference
(
DataPreference
.
preferOnline
)
mNaviSession
?.
addMineNaviListener
(
myMineNaviListener
)
val
starPoint
=
Tools
.
latLngToPoint
(
LatLng
(
starPoint
.
lat
,
starPoint
.
lng
))
val
endPoint
=
Tools
.
latLngToPoint
(
LatLng
(
endPoint
.
lat
,
endPoint
.
lng
))
var
startName
=
startName
var
endName
=
endName
var
wayPoints
=
mutableListOf
<
PoiFavorite
>()
if
(
ways
.
count
()
>
0
)
{
ways
.
forEach
{
wpoi
->
var
passPoint
=
Tools
.
latLngToPoint
(
LatLng
(
wpoi
.
passPoint
!!
.
lat
,
wpoi
.
passPoint
!!
.
lng
))
wayPoints
.
add
(
PoiFavorite
(
passPoint
,
wpoi
.
passName
))
}
}
val
routePlan
=
RoutePlan
()
routePlan
.
setRoutePreference
(
RoutePlan
.
RoutePreference
.
none
)
routePlan
.
setTransportationType
(
RoutePlan
.
TransportationType
.
car
)
mNaviSession
?.
calculateDriveRoute
(
PoiFavorite
(
starPoint
,
startName
),
wayPoints
,
PoiFavorite
(
endPoint
,
endName
),
routePlan
,
NaviSession
.
RouteMethod
.
multipleResult
)
}
/**
* 绘制规划的路线路径。
* @param routeBase 路线数据
*/
private
fun
drawPlanPath
(
routeBase
:
RouteBase
?
)
{
// 移除旧的路线覆盖物
if
(
mRoute
!=
null
)
{
mapReadView
?.
mMineMap
?.
removeOverlay
(
mRoute
)
mRoute
=
null
}
val
options
=
RouteOptions
()
.
routeBase
(
routeBase
)
.
colorType
(
Route
.
RouteColorType
.
enrouteTi
)
.
styleClass
(
"DEFAULT"
)
// 添加新的路线到地图上,并设置样式和视角适配
mRoute
=
mapReadView
?.
mMineMap
?.
addRoute
(
options
)
setRouteOverlayStyle
(
mRoute
,
false
)
navEndFitWorldAreaToRect
(
mapReadView
,
routeBase
)
}
private
fun
setRouteOverlayStyle
(
route
:
Route
?,
isSmallMapRoute
:
Boolean
=
false
)
{
var
routeStyle
=
"DEFAULT"
if
(
isSmallMapRoute
)
{
routeStyle
+=
",small-map"
}
route
?.
selectStyleClass
(
routeStyle
)
}
/**将指定的地图上的矩形区域显示到指定的屏幕矩形区域中
* @param mRouteBase 路线数据
*/
private
fun
navEndFitWorldAreaToRect
(
mapReadView
:
MapReadyView
?,
mRouteBase
:
RouteBase
?)
{
if
(
mRouteBase
==
null
)
return
val
rect
=
Rect
(
200
,
350
,
DisplayUtil
.
getScreenWidthPx
()
-
200
,
DisplayUtil
.
getScreenHeightPx
()
-
200
)
// 获取单条道路信息
val
boundingBox
=
mRouteBase
.
getBoundingBox
()
mapReadView
?.
mMineMap
?.
fitWorldAreaToRect
(
boundingBox
,
rect
)
// mapReadView?.mMineMap?.setElevation(0f)
}
/**自定义驾车路线返回*/
interface
OnDriveRoute
{
fun
onDriverRoute
(
any
:
Any
)
}
//-------------- 四维 导航监听 --------------------------
private
var
myMineNaviListener
=
object
:
MyMineNaviListener
()
{
private
fun
getRouteMsg
(
data
:
RouterErrorInfo
):
String
{
var
msg
=
""
when
(
data
.
errCode
)
{
RouterErrorInfo
.
Type
.
ComputeFailed
->
msg
=
"路线计算失败"
RouterErrorInfo
.
Type
.
destAuthError
->
msg
=
"终点所在位置数据授权错误"
RouterErrorInfo
.
Type
.
destNoData
->
msg
=
"重点所在位置没有数据"
RouterErrorInfo
.
Type
.
MissingSubfiles
->
msg
=
"缺少途径省份数据"
RouterErrorInfo
.
Type
.
NetworkError
->
msg
=
"网络连接错误"
RouterErrorInfo
.
Type
.
None
->
{}
RouterErrorInfo
.
Type
.
NotEnoughMemory
->
msg
=
"没有足够的内存可以使用"
RouterErrorInfo
.
Type
.
oriAuthError
->
msg
=
"起点所在位置数据授权错误"
RouterErrorInfo
.
Type
.
OriDestTooNear
->
msg
=
"起点和终点距离太近"
RouterErrorInfo
.
Type
.
oriNoData
->
msg
=
"起点所在位置没有数据"
RouterErrorInfo
.
Type
.
SetDestFailed
->
msg
=
"设置终点失败"
RouterErrorInfo
.
Type
.
SetOriFailed
->
msg
=
"设置起点失败"
RouterErrorInfo
.
Type
.
waypointAuthError
->
msg
=
"途经点所在位置数据授权错误"
RouterErrorInfo
.
Type
.
waypointNoData
->
msg
=
"途经点所在位置没有数据"
}
return
msg
}
override
fun
onCalculateRouteSuccess
(
data
:
RouteCollection
)
{
// 路线规划成功
// 获取单条道路信息
mRouteBase
=
data
.
routes
.
get
(
0
)
drawPlanPath
(
mRouteBase
)
// onDriveRoute?.onDriverRoute(mRouteBase)
}
override
fun
onCalculateRouteFailed
(
data
:
RouterErrorInfo
)
{
// 路线规划失败
val
msg
=
getRouteMsg
(
data
)
var
a
=
0
}
}
}
\ No newline at end of file
maplibrary/src/main/java/com/sd/maplibrary/core/basic/mine/MineToggleLayers.kt
0 → 100644
View file @
6b587c56
package
com.sd.maplibrary.core.basic.mine
import
com.minedata.minenavi.map.MineMap
import
com.minedata.minenavi.mapdal.CoordType
import
com.sd.maplibrary.core.MapReadyView
/**
*四维切换底图图层
*/
object
MineToggleLayers
{
fun
toggleLayers
(
mapReadView
:
MapReadyView
?,
type
:
Int
)
{
when
(
type
)
{
1
->
{
switch2D
(
mapReadView
?.
mMineMap
)
}
2
->
{
switchSatelliteLayer
(
mapReadView
?.
mMineMap
)
}
}
}
private
fun
switch2D
(
mMineMap
:
MineMap
?)
{
//切换为2D平面图
mMineMap
?.
setElevation
(
90f
)
mMineMap
?.
setStyleClass
(
"DEFAULT"
)
mMineMap
?.
enableSatelliteLayer
(
false
)
}
private
fun
switchSatelliteLayer
(
mMineMap
:
MineMap
?)
{
//切换为卫星图
mMineMap
?.
setSatelliteImageType
(
MineMap
.
SatelliteImageSource
.
bing
,
CoordType
.
GCJ02
)
mMineMap
?.
setStyleClass
(
"SATELLITE"
)
mMineMap
?.
enableSatelliteLayer
(
true
)
}
}
\ No newline at end of file
maplibrary/src/main/java/com/sd/maplibrary/factorys/AmapBasic.kt
0 → 100644
View file @
6b587c56
package
com.sd.maplibrary.factorys
import
com.sd.maplibrary.bean.MSLatLng
import
com.sd.maplibrary.bean.WayPoi
import
com.sd.maplibrary.core.MapReadyView
import
com.sd.maplibrary.core.basic.amap.AmapRoutePlans
import
com.sd.maplibrary.core.basic.amap.AmapToggleLayers
/**
* 高德基础实现
* IBasicMap
*/
class
AmapBasic
:
IBasicMap
{
override
fun
toggleLayers
(
mapReadView
:
MapReadyView
?,
type
:
Int
)
{
AmapToggleLayers
.
toggleLayers
(
mapReadView
,
type
)
}
override
fun
drivingPathPlanning
(
starPoint
:
MSLatLng
,
startName
:
String
,
endPoint
:
MSLatLng
,
endName
:
String
,
ways
:
List
<
WayPoi
>,
mapReadView
:
MapReadyView
?
)
{
AmapRoutePlans
.
drivingPathPlanning
(
starPoint
,
startName
,
endPoint
,
endName
,
ways
,
mapReadView
)
}
companion
object
{
val
amapBasic
:
AmapBasic
by
lazy
{
AmapBasic
()
}
}
}
\ No newline at end of file
maplibrary/src/main/java/com/sd/maplibrary/factorys/IBasicMap.kt
0 → 100644
View file @
6b587c56
package
com.sd.maplibrary.factorys
import
com.sd.maplibrary.bean.MSLatLng
import
com.sd.maplibrary.bean.WayPoi
import
com.sd.maplibrary.core.MapReadyView
/**
* 基础接口
*/
interface
IBasicMap
{
/**
* 切换地图图层
* @param mapReadView 地图准备就绪视图对象
* @param type 1=普通 2=卫星
*/
fun
toggleLayers
(
mapReadView
:
MapReadyView
?,
type
:
Int
)
/**驾车路径规划
* @param starPoint 起点坐标
* @param startName 起点名称
* @param endPoint 终点坐标
* @param endName 终点名称(高德可不传)
* @param ways 途经点集合
* @param mapReadView 地图对象
* @param onDriveRoute 路径规划结果回调
*/
fun
drivingPathPlanning
(
starPoint
:
MSLatLng
,
startName
:
String
=
"当前位置"
,
endPoint
:
MSLatLng
,
endName
:
String
=
""
,
ways
:
List
<
WayPoi
>,
mapReadView
:
MapReadyView
?
// onDriveRoute: OnDriveRoute
)
}
\ No newline at end of file
maplibrary/src/main/java/com/sd/maplibrary/factorys/ICarRoadMap.kt
0 → 100644
View file @
6b587c56
package
com.sd.maplibrary.factorys
/**
* 局部地图
*/
interface
ICarRoadMap
{
}
\ No newline at end of file
maplibrary/src/main/java/com/sd/maplibrary/factorys/IHIghMap.kt
0 → 100644
View file @
6b587c56
package
com.sd.maplibrary.factorys
/**
* 高精地图接口
*/
interface
IHIghMap
{
}
\ No newline at end of file
maplibrary/src/main/java/com/sd/maplibrary/factorys/IHighAvpMap.kt
0 → 100644
View file @
6b587c56
package
com.sd.maplibrary.factorys
/**
* AVP场景下的高精接口
*/
interface
IHighAvpMap
{
}
\ No newline at end of file
maplibrary/src/main/java/com/sd/maplibrary/factorys/IMapFactory.kt
0 → 100644
View file @
6b587c56
package
com.sd.maplibrary.factorys
interface
IMapFactory
{
fun
createBasic
():
IBasicMap
fun
createHigh
():
IHIghMap
fun
createHighAVp
():
IHighAvpMap
fun
createCarRoad
():
ICarRoadMap
}
\ No newline at end of file
maplibrary/src/main/java/com/sd/maplibrary/
intface
s/MapFactory.kt
→
maplibrary/src/main/java/com/sd/maplibrary/
factory
s/MapFactory.kt
View file @
6b587c56
package
com.sd.maplibrary.
intface
s
package
com.sd.maplibrary.
factory
s
import
com.sd.maplibrary.MAP_TYPE
import
com.sd.maplibrary.MAP_TYPE
import
com.sd.maplibrary.MSDKInitializer
import
com.sd.maplibrary.MSDKInitializer
/***地图工厂**/
/***地图工厂**/
object
MapFactory
{
object
MapFactory
:
IMapFactory
{
override
fun
createBasic
():
IBasicMap
{
/***获取四维或者高德的实例****/
fun
getMapInstance
():
MapFuncs
{
when
(
MSDKInitializer
.
getMapType
())
{
when
(
MSDKInitializer
.
getMapType
())
{
MAP_TYPE
.
MINE
->
{
MAP_TYPE
.
MINE
->
{
return
Mine
Core
.
mineCore
return
Mine
Basic
.
mineBasic
}
}
MAP_TYPE
.
AMAP
->
{
MAP_TYPE
.
AMAP
->
{
return
A
M
ap
Core
.
a
M
ap
Core
return
A
m
ap
Basic
.
a
m
ap
Basic
}
}
}
}
}
}
override
fun
createHigh
():
IHIghMap
{
TODO
(
"Not yet implemented"
)
}
override
fun
createHighAVp
():
IHighAvpMap
{
TODO
(
"Not yet implemented"
)
}
override
fun
createCarRoad
():
ICarRoadMap
{
TODO
(
"Not yet implemented"
)
}
}
}
\ No newline at end of file
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment