Commit 7a1a8e98 authored by p x's avatar p x
Browse files

写一些DEMO

parent 4169eef4
......@@ -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)
......
<?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" />-->
<!-- &lt;!&ndash; 定位需要的服务 使用2.0的定位需要加上这个 &ndash;&gt;-->
<!-- <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
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()
}
}
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
}
})
}
initMap()
//poi搜索
fun testPoiSearch() {
MSPoiSearch.startPoiSearch(
this,
"北京大学",
41.80196,
123.43326,
object : MSPoiSearch.OnMSPoiSearchLis {
override fun onPoiLis(
poiList: List<PoiSearchRes>,
resCode: Int
) {
// println("------------poiList = ${poiList}")
}
})
}
binding.demoList.adapter = demoListAdapter
demoListAdapter.submitList(demos)
//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}")
demoListAdapter.setOnItemClickListener { adapter, view, position ->
val demo = adapter.getItem(position) as DemoDetails
if (demo.activityClass != null) {
startActivity(Intent(this, demo.activityClass))
}
})
}
//定位
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
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
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)
}
}
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
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
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
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
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
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
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
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
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
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
package com.sd.mapmultiengine.viewmodels
import androidx.lifecycle.ViewModel
class MapDempVm: ViewModel() {
}
\ No newline at end of file
<?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
<?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
<?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"
app:map_type="AMAP" />
android:layout_marginTop="20dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</LinearLayout>
\ No newline at end of file
<?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
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