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
7a1a8e98
Commit
7a1a8e98
authored
Jul 28, 2025
by
p x
Browse files
写一些DEMO
parent
4169eef4
Changes
49
Hide whitespace changes
Inline
Side-by-side
app/build.gradle.kts
View file @
7a1a8e98
...
...
@@ -48,6 +48,8 @@ dependencies {
implementation
(
libs
.
material
)
implementation
(
libs
.
androidx
.
activity
)
implementation
(
libs
.
androidx
.
constraintlayout
)
implementation
(
libs
.
androidx
.
navigation
.
fragment
.
ktx
)
implementation
(
libs
.
androidx
.
navigation
.
ui
.
ktx
)
testImplementation
(
libs
.
junit
)
androidTestImplementation
(
libs
.
androidx
.
junit
)
androidTestImplementation
(
libs
.
androidx
.
espresso
.
core
)
...
...
app/src/main/AndroidManifest.xml
View file @
7a1a8e98
<?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"
tools:ignore=
"ProtectedPermissions"
/>
<uses-permission
android:name=
"android.permission.INTERACT_ACROSS_USERS_FULL"
tools:ignore=
"ProtectedPermissions"
/>
<!-- 允许程序打开网络套接字 -->
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<!-- 允许程序访问网络状态 -->
<uses-permission
android:name=
"android.permission.ACCESS_NETWORK_STATE"
/>
<!-- 允许用户改变WiFi连接状态 -->
<uses-permission
android:name=
"android.permission.CHANGE_WIFI_STATE"
/>
<!-- 程序访问粗略位置 -->
<uses-permission
android:name=
"android.permission.ACCESS_COARSE_LOCATION"
/>
<!-- 允许用户访问精确位置 -->
<uses-permission
android:name=
"android.permission.ACCESS_FINE_LOCATION"
/>
<!-- Android Q 允许后台运行定位 -->
<uses-permission
android:name=
"android.permission.ACCESS_BACKGROUND_LOCATION"
/>
<!-- 允许程序读取手机状态 -->
<uses-permission
android:name=
"android.permission.READ_PHONE_STATE"
/>
<!-- 打电话的权限 -->
<uses-permission
android:name=
"android.permission.CALL_PHONE"
/>
<!-- 从SDCard读出数据权限 -->
<uses-permission
android:name=
"android.permission.READ_EXTERNAL_STORAGE"
/>
<!-- 允许程序写入外部存储设备 -->
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<!-- 允许程序读取所有者数据 -->
<!-- Android 11+ 所有文件访问权限 -->
<uses-permission
android:name=
"android.permission.MANAGE_EXTERNAL_STORAGE"
tools:ignore=
"ScopedStorage"
/>
<uses-permission
android:name=
"android.permission.READ_OWNER_DATA"
/>
<!-- 访问WiFi状态,需要WiFi信息用于网络定位 -->
<uses-permission
android:name=
"android.permission.ACCESS_WIFI_STATE"
/>
<!-- 访问网络的变化, 需要某些信息用于网络定位 -->
<uses-permission
android:name=
"android.permission.CHANGE_NETWORK_STATE"
/>
<!-- 8.0 安装未知程序权限 -->
<uses-permission
android:name=
"android.permission.REQUEST_INSTALL_PACKAGES"
/>
<application
android:allowBackup=
"true"
...
...
@@ -12,23 +37,50 @@
android:supportsRtl=
"true"
android:theme=
"@style/Theme.MapMultiEngine"
tools:targetApi=
"31"
>
<activity
android:name=
".ui.TLayersActivity"
android:exported=
"false"
/>
<activity
android:name=
".ui.TPolygonActivity"
android:exported=
"false"
/>
<activity
android:name=
".ui.TCircelActivity"
android:exported=
"false"
/>
<activity
android:name=
".ui.TLineActivity"
android:exported=
"false"
/>
<activity
android:name=
".ui.TMarkerActivity"
android:exported=
"false"
/>
<activity
android:name=
".ui.ChangeMapCenterAct"
android:exported=
"false"
/>
<activity
android:name=
".ui.GestureDemo"
android:exported=
"false"
/>
<activity
android:name=
".ui.ShowMyLocLandian"
android:exported=
"false"
android:theme=
"@style/Theme.MapMultiEngine"
/>
<!-- <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" />-->
<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"
/>
<activity
android:name=
".ui.TBaseActivity"
android:exported=
"false"
/>
<activity
android:name=
".ui.TDriveRouteActivity"
android:exported=
"false"
/>
<!-- <uses-library -->
<activity
android:name=
".MainActivity"
android:exported=
"true"
>
...
...
@@ -38,6 +90,7 @@
<category
android:name=
"android.intent.category.LAUNCHER"
/>
</intent-filter>
</activity>
<activity
android:name=
".TextMainActivity"
/>
</application>
</manifest>
\ No newline at end of file
app/src/main/java/com/sd/mapmultiengine/MainActivity.kt
View file @
7a1a8e98
package
com.sd.mapmultiengine
import
android.app.Activity
import
android.content.Intent
import
android.os.Bundle
import
androidx.activity.
viewModels
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.maplibrary.bean.MSLatLng
import
com.sd.maplibrary.bean.MSLocBean
import
com.sd.maplibrary.bean.PoiSearchRes
import
com.sd.maplibrary.bean.RegeocodeRes
import
com.sd.maplibrary.core.MSCanvesInMap
import
com.sd.maplibrary.core.MSGestures
import
com.sd.maplibrary.core.MSGpsLocation
import
com.sd.maplibrary.core.MSMethodAdv
import
com.sd.maplibrary.core.MSPoiSearch
import
com.sd.maplibrary.core.MSRegeoCode
import
com.sd.maplibrary.core.MapReadyView
import
com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
import
com.sd.maplibrary.vms.MainVM
import
com.sd.mapmultiengine.adapter.DemoListAdapter
import
com.sd.mapmultiengine.databinding.ActivityMainBinding
import
com.sd.mapmultiengine.ui.ChangeMapCenterAct
import
com.sd.mapmultiengine.ui.GestureDemo
import
com.sd.mapmultiengine.ui.ShowMyLocLandian
import
com.sd.mapmultiengine.ui.TCircelActivity
import
com.sd.mapmultiengine.ui.TDriveRouteActivity
import
com.sd.mapmultiengine.ui.TLayersActivity
import
com.sd.mapmultiengine.ui.TLineActivity
import
com.sd.mapmultiengine.ui.TMarkerActivity
import
com.sd.mapmultiengine.ui.TPolygonActivity
class
MainActivity
:
AppCompatActivity
()
{
// val yy:Yy by viewModels()
val
mainVM
:
MainVM
by
viewModels
()
private
lateinit
var
binding
:
ActivityMainBinding
var
mapReadView
:
MapReadyView
?
=
null
private
var
demoListAdapter
=
DemoListAdapter
()
class
DemoDetails
(
var
title
:
String
,
var
activityClass
:
Class
<
out
Activity
>?
)
private
var
demos
=
listOf
(
DemoDetails
(
"切换地图图层"
,
TLayersActivity
::
class
.
java
),
DemoDetails
(
"显示定位蓝点"
,
ShowMyLocLandian
::
class
.
java
),
DemoDetails
(
"手势控制"
,
GestureDemo
::
class
.
java
),
DemoDetails
(
"改变地图中心点 , 缩放级别"
,
ChangeMapCenterAct
::
class
.
java
),
DemoDetails
(
"绘制Marker点"
,
TMarkerActivity
::
class
.
java
),
DemoDetails
(
"绘制一条线(实线、虚线)"
,
TLineActivity
::
class
.
java
),
DemoDetails
(
"绘制圆形"
,
TCircelActivity
::
class
.
java
),
DemoDetails
(
"绘制一个面"
,
TPolygonActivity
::
class
.
java
),
DemoDetails
(
"驾车路线"
,
TDriveRouteActivity
::
class
.
java
)
)
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
// enableEdgeToEdge()
binding
=
ActivityMainBinding
.
inflate
(
layoutInflater
)
setContentView
(
binding
.
root
)
// ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
// val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
// v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
// insets
// }
initMap
()
binding
.
mapMultiView
.
addMapRenderCallback
(
object
:
OnMapReadyLis
{
override
fun
onMapReady
(
mapReadyView
:
MapReadyView
)
{
this
@MainActivity
.
mapReadView
=
mapReadyView
test
()
}
})
jumpAct
()
}
private
fun
jumpAct
()
{
binding
.
btSeartch
.
setOnClickListener
{
//到搜索页面
}
binding
.
btLoc
.
setOnClickListener
{
testGpsLoc
()
}
}
binding
.
demoList
.
adapter
=
demoListAdapter
demoListAdapter
.
submitList
(
demos
)
fun
test
()
{
//显示定位蓝点
// mainVM.showMyLocLandian(this@MainActivity.mapReadView)
//手势交互
// MSGestures.setTiltGesturesEnabled(mapReadView!!,true)
//改变地图中心点
// MSMethodAdv.setMapCenter(mapReadView)
MSMethodAdv
.
setMapCenter
(
mapReadView
,
39.977290
,
116.337000
)
//改变缩放级别
MSMethodAdv
.
setMapZoom
(
mapReadView
,
10f
)
//绘制Marker点
MSCanvesInMap
.
dMarket
(
mapReadView
,
39.977290
,
116.337000
,
this
)
//绘制一条线
var
msLatLng
=
listOf
<
MSLatLng
>(
MSLatLng
(
39.999391
,
116.135972
),
MSLatLng
(
39.898323
,
116.057694
),
MSLatLng
(
39.900430
,
116.265061
),
MSLatLng
(
39.955192
,
116.140092
)
)
MSCanvesInMap
.
dPolyline
(
mapReadView
,
msLatLng
)
//绘制一个圆形
MSCanvesInMap
.
dCircle
(
mapReadView
,
39.997290
,
116.337000
,
2000f
)
//绘制一个面
var
mspLatLng
=
listOf
<
MSLatLng
>(
MSLatLng
(
39.993391
,
116.135272
),
MSLatLng
(
39.808323
,
116.057604
),
MSLatLng
(
39.904430
,
116.265061
),
MSLatLng
(
39.950192
,
116.140002
)
)
MSCanvesInMap
.
dPolygon
(
mapReadView
,
mspLatLng
)
//Poi搜索
// testPoiSearch()
//POi范围搜索
// testPoiSearchBound()
//逆地理编码
MSRegeoCode
.
geoCoder
(
this
,
41.80196
,
123.43326
,
object
:
MSRegeoCode
.
MSOnRegeo
{
override
fun
onRegeo
(
regeocodeRes
:
RegeocodeRes
?)
{
var
a
=
0
demoListAdapter
.
setOnItemClickListener
{
adapter
,
view
,
position
->
val
demo
=
adapter
.
getItem
(
position
)
as
DemoDetails
if
(
demo
.
activityClass
!=
null
)
{
startActivity
(
Intent
(
this
,
demo
.
activityClass
))
}
})
}
//poi搜索
fun
testPoiSearch
()
{
MSPoiSearch
.
startPoiSearch
(
this
,
"北京大学"
,
41.80196
,
123.43326
,
object
:
MSPoiSearch
.
OnMSPoiSearchLis
{
override
fun
onPoiLis
(
poiList
:
List
<
PoiSearchRes
>,
resCode
:
Int
)
{
// println("------------poiList = ${poiList}")
}
})
}
//poi 范围搜索
fun
testPoiSearchBound
()
{
MSPoiSearch
.
startPoiSearchBound
(
this
,
"北京大学"
,
39.977290
,
116.337000
,
25000
,
object
:
MSPoiSearch
.
OnMSPoiSearchLis
{
override
fun
onPoiLis
(
poiList
:
List
<
PoiSearchRes
>,
resCode
:
Int
)
{
// println("------------poiList = ${poiList}")
}
})
}
}
//定位
fun
testGpsLoc
()
{
MSGpsLocation
.
initLoc
(
this
)
MSGpsLocation
.
setOnMsGpsLoc
(
object
:
MSGpsLocation
.
OnMsGpsLoc
{
override
fun
onMsGpsLoc
(
mSLocBean
:
MSLocBean
)
{
println
(
"---------mSLocBean = ${mSLocBean}"
)
}
})
MSGpsLocation
.
starLoc
()
}
fun
initMap
()
{
MSDKInitializer
.
initializeMap
(
this
,
MAP_TYPE
.
AMAP
,
object
:
OnSdkInitCb
{
override
fun
onInitSuccess
()
{
println
(
"--------onMapInitSuccess
}
"
)
println
(
"--------onMapInitSuccess"
)
}
override
fun
onInitFailed
(
msg
:
String
)
{
println
(
"--------onInitFailed $msg"
)
}
})
}
override
fun
onDestroy
()
{
super
.
onDestroy
()
MSGpsLocation
.
stopLoc
()
}
}
\ No newline at end of file
app/src/main/java/com/sd/mapmultiengine/TextMainActivity.kt
0 → 100644
View file @
7a1a8e98
package
com.sd.mapmultiengine
import
android.os.Bundle
import
androidx.activity.enableEdgeToEdge
import
androidx.activity.viewModels
import
androidx.appcompat.app.AppCompatActivity
import
com.sd.maplibrary.MAP_TYPE
import
com.sd.maplibrary.MSDKInitializer
import
com.sd.maplibrary.OnSdkInitCb
import
com.sd.maplibrary.bean.MSLatLng
import
com.sd.maplibrary.bean.MSLocBean
import
com.sd.maplibrary.bean.PoiSearchRes
import
com.sd.maplibrary.bean.RegeocodeRes
import
com.sd.maplibrary.core.MSCanvesInMap
import
com.sd.maplibrary.core.MSGestures
import
com.sd.maplibrary.core.MSGpsLocation
import
com.sd.maplibrary.core.MSMethodAdv
import
com.sd.maplibrary.core.MSPoiSearch
import
com.sd.maplibrary.core.MSRegeoCode
import
com.sd.maplibrary.core.MapReadyView
import
com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
import
com.sd.maplibrary.vms.MainVM
import
com.sd.mapmultiengine.databinding.ActivityTextMainBinding
class
TextMainActivity
:
AppCompatActivity
()
{
// val yy:Yy by viewModels()
val
mainVM
:
MainVM
by
viewModels
()
private
lateinit
var
binding
:
ActivityTextMainBinding
var
mapReadView
:
MapReadyView
?
=
null
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
enableEdgeToEdge
()
binding
=
ActivityTextMainBinding
.
inflate
(
layoutInflater
)
setContentView
(
binding
.
root
)
// ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
// val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
// v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
// insets
// }
initMap
()
binding
.
mapMultiView
.
addMapRenderCallback
(
object
:
OnMapReadyLis
{
override
fun
onMapReady
(
mapReadyView
:
MapReadyView
)
{
this
@TextMainActivity
.
mapReadView
=
mapReadyView
test
()
}
})
jumpAct
()
}
private
fun
jumpAct
()
{
binding
.
btSeartch
.
setOnClickListener
{
//到搜索页面
}
binding
.
btLoc
.
setOnClickListener
{
testGpsLoc
()
}
}
fun
test
()
{
//显示定位蓝点
// mainVM.showMyLocLandian(this@MainActivity.mapReadView)
//手势交互
// MSGestures.setTiltGesturesEnabled(mapReadView!!,true)
//改变地图中心点
// MSMethodAdv.setMapCenter(mapReadView)
// MSMethodAdv.setMapCenter(mapReadView, 39.977290, 116.337000)
//改变缩放级别
MSMethodAdv
.
setMapZoom
(
mapReadView
,
10f
)
//绘制Marker点
MSCanvesInMap
.
dMarket
(
this
,
mapReadView
,
39.977290
,
116.337000
)
//绘制一条线
var
msLatLng
=
listOf
<
MSLatLng
>(
MSLatLng
(
39.999391
,
116.135972
),
MSLatLng
(
39.898323
,
116.057694
),
MSLatLng
(
39.900430
,
116.265061
),
MSLatLng
(
39.955192
,
116.140092
)
)
MSCanvesInMap
.
dPolyline
(
mapReadView
,
msLatLng
)
//绘制一个圆形
MSCanvesInMap
.
dCircle
(
mapReadView
,
39.997290
,
116.337000
,
2000f
)
//绘制一个面
var
mspLatLng
=
listOf
<
MSLatLng
>(
MSLatLng
(
39.993391
,
116.135272
),
MSLatLng
(
39.808323
,
116.057604
),
MSLatLng
(
39.904430
,
116.265061
),
MSLatLng
(
39.950192
,
116.140002
)
)
MSCanvesInMap
.
dPolygon
(
mapReadView
,
mspLatLng
)
//Poi搜索
// testPoiSearch()
//POi范围搜索
// testPoiSearchBound()
//逆地理编码
MSRegeoCode
.
geoCoder
(
this
,
41.80196
,
123.43326
,
object
:
MSRegeoCode
.
MSOnRegeo
{
override
fun
onRegeo
(
regeocodeRes
:
RegeocodeRes
?)
{
var
a
=
0
}
})
}
//poi搜索
fun
testPoiSearch
()
{
MSPoiSearch
.
startPoiSearch
(
this
,
"北京大学"
,
41.80196
,
123.43326
,
object
:
MSPoiSearch
.
OnMSPoiSearchLis
{
override
fun
onPoiLis
(
poiList
:
List
<
PoiSearchRes
>,
resCode
:
Int
)
{
// println("------------poiList = ${poiList}")
}
})
}
//poi 范围搜索
fun
testPoiSearchBound
()
{
MSPoiSearch
.
startPoiSearchBound
(
this
,
"北京大学"
,
39.977290
,
116.337000
,
25000
,
object
:
MSPoiSearch
.
OnMSPoiSearchLis
{
override
fun
onPoiLis
(
poiList
:
List
<
PoiSearchRes
>,
resCode
:
Int
)
{
// println("------------poiList = ${poiList}")
}
})
}
//定位
fun
testGpsLoc
()
{
MSGpsLocation
.
initLoc
(
this
)
MSGpsLocation
.
setOnMsGpsLoc
(
object
:
MSGpsLocation
.
OnMsGpsLoc
{
override
fun
onMsGpsLoc
(
mSLocBean
:
MSLocBean
)
{
println
(
"---------mSLocBean = ${mSLocBean}"
)
}
})
MSGpsLocation
.
starLoc
()
}
fun
initMap
()
{
MSDKInitializer
.
initializeMap
(
this
,
MAP_TYPE
.
AMAP
,
object
:
OnSdkInitCb
{
override
fun
onInitSuccess
()
{
println
(
"--------onMapInitSuccess}"
)
}
override
fun
onInitFailed
(
msg
:
String
)
{
}
})
}
override
fun
onDestroy
()
{
super
.
onDestroy
()
MSGpsLocation
.
stopLoc
()
}
}
\ No newline at end of file
app/src/main/java/com/sd/mapmultiengine/adapter/DemoListAdapter.kt
0 → 100644
View file @
7a1a8e98
package
com.sd.mapmultiengine.adapter
import
android.content.Context
import
android.view.ViewGroup
import
android.widget.TextView
import
com.chad.library.adapter4.BaseQuickAdapter
import
com.chad.library.adapter4.viewholder.QuickViewHolder
import
com.sd.mapmultiengine.MainActivity.DemoDetails
import
com.sd.mapmultiengine.R
class
DemoListAdapter
:
BaseQuickAdapter
<
DemoDetails
,
QuickViewHolder
>()
{
override
fun
onCreateViewHolder
(
context
:
Context
,
parent
:
ViewGroup
,
viewType
:
Int
):
QuickViewHolder
{
// 返回一个 ViewHolder
return
QuickViewHolder
(
R
.
layout
.
main_listitem
,
parent
)
}
override
fun
onBindViewHolder
(
holder
:
QuickViewHolder
,
position
:
Int
,
item
:
DemoDetails
?
)
{
// 设置item数据
var
tv
=
holder
.
getView
<
TextView
>(
R
.
id
.
main_tv
)
tv
.
setText
(
item
?.
title
)
}
}
app/src/main/java/com/sd/mapmultiengine/ui/ChangeMapCenterAct.kt
0 → 100644
View file @
7a1a8e98
package
com.sd.mapmultiengine.ui
import
android.os.Bundle
import
androidx.appcompat.app.AppCompatActivity
import
com.sd.maplibrary.core.MSMethodAdv
import
com.sd.maplibrary.core.MapReadyView
import
com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
import
com.sd.mapmultiengine.R
import
com.sd.mapmultiengine.databinding.ActivityChangeMapCenterBinding
import
com.sd.mapmultiengine.databinding.ActivityGestureDemoBinding
import
com.sd.mapmultiengine.ui.GestureDemo
/***改变地图中心点**/
class
ChangeMapCenterAct
:
AppCompatActivity
()
{
private
lateinit
var
binding
:
ActivityChangeMapCenterBinding
var
mapReadView
:
MapReadyView
?
=
null
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
binding
=
ActivityChangeMapCenterBinding
.
inflate
(
layoutInflater
)
setContentView
(
binding
.
root
)
binding
.
mapMultiView
.
addMapRenderCallback
(
object
:
OnMapReadyLis
{
override
fun
onMapReady
(
mapReadyView
:
MapReadyView
)
{
this
@ChangeMapCenterAct
.
mapReadView
=
mapReadyView
}
})
binding
.
bt1
.
setOnClickListener
{
//改变地图中心点
MSMethodAdv
.
setMapCenter
(
mapReadView
,
40.033121
,
116.307621
)
}
//改变缩放级别
binding
.
bt2
.
setOnClickListener
{
var
zoom
=
binding
.
et1
.
text
.
toString
().
toFloat
()
MSMethodAdv
.
setMapZoom
(
mapReadView
,
zoom
)
}
}
}
\ No newline at end of file
app/src/main/java/com/sd/mapmultiengine/ui/GestureDemo.kt
0 → 100644
View file @
7a1a8e98
package
com.sd.mapmultiengine.ui
import
android.os.Bundle
import
androidx.appcompat.app.AppCompatActivity
import
com.sd.maplibrary.core.MSGestures
import
com.sd.maplibrary.core.MapReadyView
import
com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
import
com.sd.mapmultiengine.TextMainActivity
import
com.sd.mapmultiengine.databinding.ActivityGestureDemoBinding
/****手势控制***/
class
GestureDemo
:
AppCompatActivity
()
{
private
lateinit
var
binding
:
ActivityGestureDemoBinding
var
mapReadView
:
MapReadyView
?
=
null
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
binding
=
ActivityGestureDemoBinding
.
inflate
(
layoutInflater
)
setContentView
(
binding
.
root
)
binding
.
mapMultiView
.
addMapRenderCallback
(
object
:
OnMapReadyLis
{
override
fun
onMapReady
(
mapReadyView
:
MapReadyView
)
{
this
@GestureDemo
.
mapReadView
=
mapReadyView
}
})
binding
.
bt1
.
setOnClickListener
{
//关闭旋转
MSGestures
.
setRotateGesturesEnabled
(
mapReadView
!!
,
false
)
}
binding
.
bt2
.
setOnClickListener
{
//关闭倾斜开关
MSGestures
.
setTiltGesturesEnabled
(
mapReadView
!!
,
false
)
}
}
}
\ No newline at end of file
app/src/main/java/com/sd/mapmultiengine/ui/ShowMyLocLandian.kt
0 → 100644
View file @
7a1a8e98
package
com.sd.mapmultiengine.ui
import
android.os.Bundle
import
androidx.activity.viewModels
import
com.google.android.material.snackbar.Snackbar
import
androidx.appcompat.app.AppCompatActivity
import
androidx.navigation.findNavController
import
androidx.navigation.ui.AppBarConfiguration
import
androidx.navigation.ui.navigateUp
import
androidx.navigation.ui.setupActionBarWithNavController
import
com.sd.maplibrary.core.MSLocationStyle
import
com.sd.maplibrary.core.MapReadyView
import
com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
import
com.sd.maplibrary.vms.MainVM
import
com.sd.mapmultiengine.R
import
com.sd.mapmultiengine.TextMainActivity
import
com.sd.mapmultiengine.databinding.ActivityShowMyLocLandianBinding
import
com.sd.mapmultiengine.viewmodels.MapDempVm
import
kotlin.getValue
/***显示定位蓝点***/
class
ShowMyLocLandian
:
AppCompatActivity
()
{
val
mapDempVm
:
MapDempVm
by
viewModels
()
private
lateinit
var
binding
:
ActivityShowMyLocLandianBinding
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
binding
=
ActivityShowMyLocLandianBinding
.
inflate
(
layoutInflater
)
setContentView
(
binding
.
root
)
binding
.
mapMultiView
.
addMapRenderCallback
(
object
:
OnMapReadyLis
{
override
fun
onMapReady
(
mapReadyView
:
MapReadyView
)
{
MSLocationStyle
.
setLocationStyle
(
mapReadyView
)
}
})
}
}
\ No newline at end of file
app/src/main/java/com/sd/mapmultiengine/ui/TBaseActivity.kt
0 → 100644
View file @
7a1a8e98
package
com.sd.mapmultiengine.ui
import
android.os.Bundle
import
androidx.activity.enableEdgeToEdge
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.view.ViewCompat
import
androidx.core.view.WindowInsetsCompat
import
com.sd.maplibrary.MAP_TYPE
import
com.sd.maplibrary.MSDKInitializer
import
com.sd.maplibrary.OnSdkInitCb
import
com.sd.maplibrary.core.MapReadyView
import
com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
import
com.sd.mapmultiengine.R
import
com.sd.mapmultiengine.TextMainActivity
open
class
TBaseActivity
:
AppCompatActivity
()
{
var
mapReadView
:
MapReadyView
?
=
null
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
// setContentView(R.layout.activity_tbase)
}
}
\ No newline at end of file
app/src/main/java/com/sd/mapmultiengine/ui/TCircelActivity.kt
0 → 100644
View file @
7a1a8e98
package
com.sd.mapmultiengine.ui
import
android.os.Bundle
import
androidx.appcompat.app.AppCompatActivity
import
com.sd.maplibrary.core.MSCanvesInMap
import
com.sd.maplibrary.core.MapReadyView
import
com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
import
com.sd.mapmultiengine.databinding.ActivityTcircelBinding
/***绘制圆形**/
class
TCircelActivity
:
AppCompatActivity
()
{
private
lateinit
var
binding
:
ActivityTcircelBinding
var
mapReadView
:
MapReadyView
?
=
null
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
binding
=
ActivityTcircelBinding
.
inflate
(
layoutInflater
)
setContentView
(
binding
.
root
)
binding
.
mapMultiView
.
addMapRenderCallback
(
object
:
OnMapReadyLis
{
override
fun
onMapReady
(
mapReadyView
:
MapReadyView
)
{
this
@TCircelActivity
.
mapReadView
=
mapReadyView
//绘制一个圆形 116.3975,39.9079
MSCanvesInMap
.
dCircle
(
mapReadView
,
39.907923
,
116.397512
,
2000f
)
}
})
}
}
\ No newline at end of file
app/src/main/java/com/sd/mapmultiengine/ui/TDriveRouteActivity.kt
0 → 100644
View file @
7a1a8e98
package
com.sd.mapmultiengine.ui
import
android.os.Bundle
import
com.sd.maplibrary.bean.DriverRouteBean
import
com.sd.maplibrary.bean.MSLatLng
import
com.sd.maplibrary.core.MSRoutePlans
import
com.sd.maplibrary.core.MSRoutePlans.OnDriveRoute
import
com.sd.maplibrary.core.MapReadyView
import
com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
import
com.sd.mapmultiengine.databinding.ActivityTdriveRouteBinding
class
TDriveRouteActivity
:
TBaseActivity
()
{
private
lateinit
var
binding
:
ActivityTdriveRouteBinding
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
binding
=
ActivityTdriveRouteBinding
.
inflate
(
layoutInflater
)
setContentView
(
binding
.
root
)
binding
.
mapMultiView
.
addMapRenderCallback
(
object
:
OnMapReadyLis
{
override
fun
onMapReady
(
mapReadyView
:
MapReadyView
)
{
this
@TDriveRouteActivity
.
mapReadView
=
mapReadyView
}
})
//初始化并设置监听
MSRoutePlans
.
addPlanLis
(
this
,
onDriveRoute
)
//开始导航
binding
.
starplan
.
setOnClickListener
{
// if (mapReadView == null)
// return@setOnClickListener
// 起点坐标 116.3215,39.8919
val
startPoint
=
MSLatLng
(
116.490682
,
39.806898
)
// 终点坐标116.3793,39.8643
val
endPoint
=
MSLatLng
(
116.379311
,
39.864311
)
// 终点名称
val
endName
=
""
MSRoutePlans
.
drivingPathPlanning
(
startPoint
,
endPoint
,
endName
)
}
}
private
var
onDriveRoute
=
object
:
OnDriveRoute
{
override
fun
onDriverRoute
(
driverRouteBean
:
DriverRouteBean
)
{
var
a
=
0
}
}
}
\ No newline at end of file
app/src/main/java/com/sd/mapmultiengine/ui/TLayersActivity.kt
0 → 100644
View file @
7a1a8e98
package
com.sd.mapmultiengine.ui
import
android.os.Bundle
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.ui.MapMultiView.OnMapReadyLis
import
com.sd.mapmultiengine.R
import
com.sd.mapmultiengine.databinding.ActivityTlayersBinding
/***切换图层**/
class
TLayersActivity
:
AppCompatActivity
()
{
private
lateinit
var
binding
:
ActivityTlayersBinding
var
mapReadView
:
MapReadyView
?
=
null
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
binding
=
ActivityTlayersBinding
.
inflate
(
layoutInflater
)
setContentView
(
binding
.
root
)
binding
.
mapMultiView
.
addMapRenderCallback
(
object
:
OnMapReadyLis
{
override
fun
onMapReady
(
mapReadyView
:
MapReadyView
)
{
this
@TLayersActivity
.
mapReadView
=
mapReadyView
//绘制Marker点 116.3985,39.9079
// MSCanvesInMap.dMarket(this@TLineActivity, mapReadView, 39.907900, 116.398500)
// MSMethodAdv.setMapCenter(mapReadView, 39.999391, 116.135972)
}
})
binding
.
rg
.
setOnCheckedChangeListener
{
group
,
checkedId
->
when
(
checkedId
)
{
R
.
id
.
rb1
->
{
MSLayers
.
changeLayers
(
mapReadView
,
1
)
}
R
.
id
.
rb2
->
{
MSLayers
.
changeLayers
(
mapReadView
,
2
)
}
}
}
}
}
\ No newline at end of file
app/src/main/java/com/sd/mapmultiengine/ui/TLineActivity.kt
0 → 100644
View file @
7a1a8e98
package
com.sd.mapmultiengine.ui
import
android.graphics.Color
import
android.os.Bundle
import
androidx.activity.enableEdgeToEdge
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.view.ViewCompat
import
androidx.core.view.WindowInsetsCompat
import
com.sd.maplibrary.bean.MSLatLng
import
com.sd.maplibrary.core.MSCanvesInMap
import
com.sd.maplibrary.core.MSMethodAdv
import
com.sd.maplibrary.core.MapReadyView
import
com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
import
com.sd.mapmultiengine.R
import
com.sd.mapmultiengine.databinding.ActivityTlineBinding
import
com.sd.mapmultiengine.databinding.ActivityTmarkerBinding
import
com.sd.mapmultiengine.ui.TMarkerActivity
/*****绘制一条线**/
class
TLineActivity
:
AppCompatActivity
()
{
private
lateinit
var
binding
:
ActivityTlineBinding
var
mapReadView
:
MapReadyView
?
=
null
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
binding
=
ActivityTlineBinding
.
inflate
(
layoutInflater
)
setContentView
(
binding
.
root
)
binding
.
mapMultiView
.
addMapRenderCallback
(
object
:
OnMapReadyLis
{
override
fun
onMapReady
(
mapReadyView
:
MapReadyView
)
{
this
@TLineActivity
.
mapReadView
=
mapReadyView
//绘制Marker点 116.3985,39.9079
// MSCanvesInMap.dMarket(this@TLineActivity, mapReadView, 39.907900, 116.398500)
MSMethodAdv
.
setMapCenter
(
mapReadView
,
39.999391
,
116.135972
)
}
})
binding
.
bt1
.
setOnClickListener
{
//画实线
//绘制一条线
var
msLatLng
=
listOf
<
MSLatLng
>(
MSLatLng
(
39.999391
,
116.135972
),
MSLatLng
(
39.898323
,
116.057694
),
MSLatLng
(
39.900430
,
116.265061
),
MSLatLng
(
39.955192
,
116.140092
)
)
MSCanvesInMap
.
dPolyline
(
mapReadView
,
msLatLng
,
5f
,
Color
.
argb
(
255
,
255
,
0
,
255
))
}
binding
.
bt2
.
setOnClickListener
{
//画虚线
var
msLatLng
=
listOf
<
MSLatLng
>(
MSLatLng
(
39.999591
,
116.135972
),
MSLatLng
(
39.898123
,
116.057694
),
MSLatLng
(
39.900230
,
116.265061
),
MSLatLng
(
39.951192
,
116.140092
)
)
MSCanvesInMap
.
dPolyline
(
mapReadView
,
msLatLng
,
5f
,
Color
.
argb
(
255
,
255
,
0
,
255
),
isDotted
=
true
)
}
}
}
\ No newline at end of file
app/src/main/java/com/sd/mapmultiengine/ui/TMarkerActivity.kt
0 → 100644
View file @
7a1a8e98
package
com.sd.mapmultiengine.ui
import
android.os.Bundle
import
androidx.appcompat.app.AppCompatActivity
import
com.sd.maplibrary.core.MSCanvesInMap
import
com.sd.maplibrary.core.MSMethodAdv
import
com.sd.maplibrary.core.MapReadyView
import
com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
import
com.sd.mapmultiengine.databinding.ActivityTmarkerBinding
/***绘制Marker点***/
class
TMarkerActivity
:
AppCompatActivity
()
{
private
lateinit
var
binding
:
ActivityTmarkerBinding
var
mapReadView
:
MapReadyView
?
=
null
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
binding
=
ActivityTmarkerBinding
.
inflate
(
layoutInflater
)
setContentView
(
binding
.
root
)
binding
.
mapMultiView
.
addMapRenderCallback
(
object
:
OnMapReadyLis
{
override
fun
onMapReady
(
mapReadyView
:
MapReadyView
)
{
this
@TMarkerActivity
.
mapReadView
=
mapReadyView
//绘制Marker点 116.3985,39.9079
MSCanvesInMap
.
dMarket
(
this
@TMarkerActivity
,
mapReadView
,
39.907900
,
116.398500
)
// MSMethodAdv.setMapCenter(mapReadView, 39.977290, 116.337000)
}
})
}
}
\ No newline at end of file
app/src/main/java/com/sd/mapmultiengine/ui/TPolygonActivity.kt
0 → 100644
View file @
7a1a8e98
package
com.sd.mapmultiengine.ui
import
android.os.Bundle
import
androidx.activity.enableEdgeToEdge
import
androidx.appcompat.app.AppCompatActivity
import
androidx.core.view.ViewCompat
import
androidx.core.view.WindowInsetsCompat
import
com.sd.maplibrary.bean.MSLatLng
import
com.sd.maplibrary.core.MSCanvesInMap
import
com.sd.maplibrary.core.MSMethodAdv
import
com.sd.maplibrary.core.MapReadyView
import
com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
import
com.sd.mapmultiengine.R
import
com.sd.mapmultiengine.databinding.ActivityTcircelBinding
import
com.sd.mapmultiengine.databinding.ActivityTpolygonBinding
import
com.sd.mapmultiengine.ui.TCircelActivity
/*****/
class
TPolygonActivity
:
AppCompatActivity
()
{
private
lateinit
var
binding
:
ActivityTpolygonBinding
var
mapReadView
:
MapReadyView
?
=
null
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
binding
=
ActivityTpolygonBinding
.
inflate
(
layoutInflater
)
setContentView
(
binding
.
root
)
binding
.
mapMultiView
.
addMapRenderCallback
(
object
:
OnMapReadyLis
{
override
fun
onMapReady
(
mapReadyView
:
MapReadyView
)
{
this
@TPolygonActivity
.
mapReadView
=
mapReadyView
MSMethodAdv
.
setMapZoom
(
mapReadView
,
9f
)
//绘制一个面
var
mspLatLng
=
listOf
<
MSLatLng
>(
MSLatLng
(
39.993391
,
116.135272
),
MSLatLng
(
39.808323
,
116.057604
),
MSLatLng
(
39.904430
,
116.265061
),
MSLatLng
(
39.950192
,
116.140002
)
)
MSCanvesInMap
.
dPolygon
(
mapReadView
,
mspLatLng
)
}
})
}
}
\ No newline at end of file
app/src/main/java/com/sd/mapmultiengine/viewmodels/MapDempVm.kt
0 → 100644
View file @
7a1a8e98
package
com.sd.mapmultiengine.viewmodels
import
androidx.lifecycle.ViewModel
class
MapDempVm
:
ViewModel
()
{
}
\ No newline at end of file
app/src/main/res/layout/activity_change_map_center.xml
0 → 100644
View file @
7a1a8e98
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<Button
android:id=
"@+id/bt1"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"改变中心点"
/>
<EditText
android:id=
"@+id/et1"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginLeft=
"20dp"
android:gravity=
"center"
android:hint=
"输入数字"
android:inputType=
"number"
/>
<Button
android:id=
"@+id/bt2"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"改变缩放级别"
/>
</LinearLayout>
<com.sd.maplibrary.ui.MapMultiView
android:id=
"@+id/mapMultiView"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
app:map_type=
"MINE"
/>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/activity_gesture_demo.xml
0 → 100644
View file @
7a1a8e98
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
tools:context=
".ui.GestureDemo"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<Button
android:id=
"@+id/bt1"
android:text=
"关闭旋转"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
/>
<Button
android:id=
"@+id/bt2"
android:text=
"关闭倾斜"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
/>
</LinearLayout>
<com.sd.maplibrary.ui.MapMultiView
android:id=
"@+id/mapMultiView"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
app:map_type=
"AMAP"
/>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/activity_main.xml
View file @
7a1a8e98
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
>
android:orientation=
"vertical"
tools:context=
".MainActivity"
>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
>
<Button
android:id=
"@+id/bt_seartch"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"搜索"
/>
<Button
android:id=
"@+id/bt_loc"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"定位"
/>
</LinearLayout>
<com.sd.maplibrary.ui.MapMultiView
android:id=
"@+id/mapMultiView"
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/demo_list"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
a
pp:map_type=
"AMAP"
/>
a
ndroid:layout_marginTop=
"20dp"
app:layoutManager=
"androidx.recyclerview.widget.LinearLayoutManager"
/>
</LinearLayout>
</LinearLayout>
\ No newline at end of file
app/src/main/res/layout/activity_show_my_loc_landian.xml
0 → 100644
View file @
7a1a8e98
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:orientation=
"vertical"
tools:context=
".ui.ShowMyLocLandian"
>
<com.sd.maplibrary.ui.MapMultiView
android:id=
"@+id/mapMultiView"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
app:map_type=
"AMAP"
/>
</LinearLayout>
\ No newline at end of file
Prev
1
2
3
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