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

集成初始化,显示地图,显示定位蓝点

parent b785e7cb
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
android:id="@+id/mapMultiView" android:id="@+id/mapMultiView"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
/> app:map_type="MINE" />
</LinearLayout> </LinearLayout>
...@@ -9,17 +9,7 @@ ...@@ -9,17 +9,7 @@
android:paddingHorizontal="10dp" android:paddingHorizontal="10dp"
android:paddingVertical="5dp"> android:paddingVertical="5dp">
<com.sd.maplibrary.ui.view.CircleTextView
android:id="@+id/tv_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="5dp"
android:text="1"
android:padding="8dp"
android:textColor="@color/white"
android:textSize="12sp"
app:backColor="#2F83ED" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -27,7 +17,6 @@ ...@@ -27,7 +17,6 @@
android:layout_centerVertical="true" android:layout_centerVertical="true"
android:layout_marginLeft="5dp" android:layout_marginLeft="5dp"
android:layout_toLeftOf="@+id/lin2" android:layout_toLeftOf="@+id/lin2"
android:layout_toRightOf="@id/tv_num"
android:layout_weight="1" android:layout_weight="1"
android:orientation="vertical"> android:orientation="vertical">
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
tools:showIn="@layout/activity_search"> >
<ImageView <ImageView
android:id="@+id/btn_swap" android:id="@+id/btn_swap"
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
android:background="@color/white" android:background="@color/white"
android:gravity="right |center_vertical"> android:gravity="right |center_vertical">
<com.sd.maplibrary.ui.view.CleanableEditText <EditText
android:id="@+id/et_end_place" android:id="@+id/et_end_place"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_weight="1" android:layout_weight="1"
......
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
<!-- <domain-config cleartextTrafficPermitted="true">-->
<!-- <domain includeSubdomains="true">minedata.cn</domain>-->
<!-- </domain-config>-->
</network-security-config>
...@@ -21,4 +21,4 @@ kotlin.code.style=official ...@@ -21,4 +21,4 @@ kotlin.code.style=official
# resources declared in the library itself and none from the library's dependencies, # resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library # thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true android.nonTransitiveRClass=true
android.defaults.buildfeatures.databinding=true #android.defaults.buildfeatures.databinding=true
\ No newline at end of file \ No newline at end of file
...@@ -44,7 +44,7 @@ android { ...@@ -44,7 +44,7 @@ android {
//} //}
dependencies { dependencies {
implementation(fileTree(mapOf("dir" to "libs","include" to listOf("*.jar", "*.aar")))) api(fileTree(mapOf("dir" to "libs","include" to listOf("*.jar", "*.aar"))))
implementation(libs.androidx.core.ktx) implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat) implementation(libs.androidx.appcompat)
implementation(libs.material) implementation(libs.material)
...@@ -54,15 +54,14 @@ dependencies { ...@@ -54,15 +54,14 @@ dependencies {
androidTestImplementation(libs.androidx.espresso.core) androidTestImplementation(libs.androidx.espresso.core)
//网络 //网络
implementation("com.squareup.retrofit2:retrofit:2.9.0") // implementation("com.squareup.retrofit2:retrofit:2.9.0")
implementation("com.squareup.retrofit2:converter-gson:2.9.0") // implementation("com.squareup.retrofit2:converter-gson:2.9.0")
// 权限请求框架 // 权限请求框架
implementation("com.guolindev.permissionx:permissionx:1.8.1") implementation("com.guolindev.permissionx:permissionx:1.8.1")
// ViewModel // ViewModel
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2") implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2")
//fragment-ktx //fragment-ktx
implementation("androidx.fragment:fragment-ktx:1.8.0") implementation("androidx.fragment:fragment-ktx:1.8.0")
// https://github.com/CymChad/BaseRecyclerViewAdapterHelper/ RecyclerView 适配器
implementation("io.github.cymchad:BaseRecyclerViewAdapterHelper4:4.1.7")
} }
\ No newline at end of file
...@@ -8,6 +8,8 @@ import org.junit.runner.RunWith ...@@ -8,6 +8,8 @@ import org.junit.runner.RunWith
import org.junit.Assert.* import org.junit.Assert.*
/** /**
* Instrumented test, which will execute on an Android device. * Instrumented test, which will execute on an Android device.
* *
...@@ -21,4 +23,7 @@ class ExampleInstrumentedTest { ...@@ -21,4 +23,7 @@ class ExampleInstrumentedTest {
val appContext = InstrumentationRegistry.getInstrumentation().targetContext val appContext = InstrumentationRegistry.getInstrumentation().targetContext
assertEquals("com.sd.maplibrary.test", appContext.packageName) assertEquals("com.sd.maplibrary.test", appContext.packageName)
} }
}
\ No newline at end of file }
...@@ -18,15 +18,16 @@ ...@@ -18,15 +18,16 @@
<uses-permission android:name="android.permission.CALL_PHONE" /> <!-- 从SDCard读出数据权限 --> <uses-permission android:name="android.permission.CALL_PHONE" /> <!-- 从SDCard读出数据权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 允许程序写入外部存储设备 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 允许程序写入外部存储设备 -->
<uses-permission android:name="android.permission.WRITE_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.READ_OWNER_DATA" /> <!-- 访问WiFi状态,需要WiFi信息用于网络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 访问网络的变化, 需要某些信息用于网络定位 --> <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.CHANGE_NETWORK_STATE" /> <!-- 8.0 安装未知程序权限 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<application <application>
android:networkSecurityConfig="@xml/network_security_config" <!-- android:supportsRtl="true">-->
android:supportsRtl="true">
<activity android:name=".ui.SearchActivity" />
<uses-library <uses-library
android:name="org.apache.http.legacy" android:name="org.apache.http.legacy"
...@@ -35,6 +36,13 @@ ...@@ -35,6 +36,13 @@
<meta-data <meta-data
android:name="com.minedata.minenavi.apikey" android:name="com.minedata.minenavi.apikey"
android:value="57ac7a0d56494912a0c28e651fa4a40a" /> android:value="57ac7a0d56494912a0c28e651fa4a40a" />
</application>
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="3b7d009011b97dcc3815a93e8ddfcd77" />
<!-- 定位需要的服务 使用2.0的定位需要加上这个 -->
<service android:name="com.amap.api.location.APSService" />
</application>
</manifest> </manifest>
\ No newline at end of file
...@@ -2,13 +2,14 @@ package com.sd.maplibrary ...@@ -2,13 +2,14 @@ package com.sd.maplibrary
import android.Manifest import android.Manifest
import android.content.Context import android.content.Context
import android.os.Build
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import com.amap.api.maps.MapsInitializer
import com.minedata.minenavi.SDKInitializer import com.minedata.minenavi.SDKInitializer
import com.minedata.minenavi.SDKInitializer.InitListener import com.minedata.minenavi.SDKInitializer.InitListener
import com.minedata.minenavi.mapdal.CoordType import com.minedata.minenavi.mapdal.CoordType
import com.minedata.minenavi.poiquery.SearchUrlType import com.minedata.minenavi.poiquery.SearchUrlType
import com.permissionx.guolindev.PermissionX import com.permissionx.guolindev.PermissionX
import com.sd.maplibrary.utils.ToastHelper
/**AMAP = 高德 /**AMAP = 高德
...@@ -20,7 +21,7 @@ enum class MAP_TYPE { ...@@ -20,7 +21,7 @@ enum class MAP_TYPE {
} }
class UserCtx { private class UserCtx {
var mContext: Context? = null var mContext: Context? = null
var map_type: MAP_TYPE = MAP_TYPE.MINE var map_type: MAP_TYPE = MAP_TYPE.MINE
...@@ -32,21 +33,19 @@ class UserCtx { ...@@ -32,21 +33,19 @@ class UserCtx {
interface OnSdkInitCb { interface OnSdkInitCb {
/***初始化成功**/ /***初始化成功**/
fun onInitSuccess(map_type: MAP_TYPE) fun onInitSuccess()
/***初始化成失败**/ /***初始化成失败**/
fun onInitFailed(msg: String?) fun onInitFailed(msg: String)
/***权限被拒**/
fun onPerDenied()
} }
object MSDKInitializer { object MSDKInitializer {
private var onSdkInitCb: OnSdkInitCb? = null private var onSdkInitCb: OnSdkInitCb? = null
fun initializeMap(context: Context, map_type: MAP_TYPE, onSdkInitCb: OnSdkInitCb?) { fun initializeMap(context: Context, map_type: MAP_TYPE, onSdkInitCb: OnSdkInitCb) {
this@MSDKInitializer.onSdkInitCb = onSdkInitCb this.onSdkInitCb = onSdkInitCb
UserCtx.instance.mContext = context UserCtx.instance.mContext = context
UserCtx.instance.map_type = map_type UserCtx.instance.map_type = map_type
requestPers() requestPers()
...@@ -56,11 +55,14 @@ object MSDKInitializer { ...@@ -56,11 +55,14 @@ object MSDKInitializer {
return UserCtx.instance.map_type return UserCtx.instance.map_type
} }
/**使用API初始化地图**/
private fun mapTypeInit() { private fun mapTypeInit() {
val ctx = UserCtx.instance.mContext val ctx = UserCtx.instance.mContext
when (UserCtx.instance.map_type) { when (UserCtx.instance.map_type) {
MAP_TYPE.AMAP -> { MAP_TYPE.AMAP -> {
MapsInitializer.updatePrivacyShow(ctx, true, true)
MapsInitializer.updatePrivacyAgree(ctx, true)
onSdkInitCb?.onInitFailed("高德不支持api初始化")
} }
MAP_TYPE.MINE -> { MAP_TYPE.MINE -> {
...@@ -71,10 +73,10 @@ object MSDKInitializer { ...@@ -71,10 +73,10 @@ object MSDKInitializer {
SDKInitializer.setSearchUrlType(SearchUrlType.v1) SDKInitializer.setSearchUrlType(SearchUrlType.v1)
SDKInitializer.initialize(ctx, object : InitListener { SDKInitializer.initialize(ctx, object : InitListener {
override fun onInitSuccess() { override fun onInitSuccess() {
onSdkInitCb?.onInitSuccess(UserCtx.instance.map_type) onSdkInitCb?.onInitSuccess()
} }
override fun onInitFailed(msg: String?) { override fun onInitFailed(msg: String) {
onSdkInitCb?.onInitFailed(msg) onSdkInitCb?.onInitFailed(msg)
} }
}) })
...@@ -87,19 +89,22 @@ object MSDKInitializer { ...@@ -87,19 +89,22 @@ object MSDKInitializer {
} }
} }
private fun requestPers() { private fun requestPers() {
if (UserCtx.instance.mContext is FragmentActivity) { if (UserCtx.instance.mContext is FragmentActivity) {
var list = listOf( var pers = mutableListOf(
Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.ACCESS_BACKGROUND_LOCATION,
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.ACCESS_BACKGROUND_LOCATION
) )
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
// pers.add(Manifest.permission.READ_EXTERNAL_STORAGE)
pers.add(Manifest.permission.MANAGE_EXTERNAL_STORAGE)
} else {
pers.add(Manifest.permission.READ_EXTERNAL_STORAGE)
}
PermissionX.init(UserCtx.instance.mContext as FragmentActivity) PermissionX.init(UserCtx.instance.mContext as FragmentActivity)
.permissions(list) .permissions(pers)
.onExplainRequestReason { scope, deniedList -> .onExplainRequestReason { scope, deniedList ->
scope.showRequestReasonDialog( scope.showRequestReasonDialog(
deniedList, deniedList,
...@@ -115,9 +120,7 @@ object MSDKInitializer { ...@@ -115,9 +120,7 @@ object MSDKInitializer {
if (allGranted) { if (allGranted) {
mapTypeInit() mapTypeInit()
} else { } else {
ToastHelper.showShort(UserCtx.instance.mContext!!, "权限被拒") onSdkInitCb?.onInitFailed("权限被拒")
onSdkInitCb?.onPerDenied()
} }
} }
...@@ -127,4 +130,5 @@ object MSDKInitializer { ...@@ -127,4 +130,5 @@ object MSDKInitializer {
} }
} }
\ No newline at end of file
package com.sd.maplibrary
/**AMAP = 高德
* MINE =四维
* ***/
enum class MAPTYPE {
MINE,
AMAP
}
class RetrofitMap(var maptype: MAPTYPE) {
class Builder {
private var maptype: MAPTYPE? = null
fun mapType(maptype: MAPTYPE) {
this.maptype = maptype
}
fun build(): RetrofitMap {
if (maptype == null) {
throw IllegalArgumentException("maptype must not NULL")
}
return RetrofitMap(maptype!!)
}
}
}
\ No newline at end of file
package com.sd.maplibrary
//@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION,
// AnnotationTarget.TYPE_PARAMETER, AnnotationTarget.VALUE_PARAMETER,
// AnnotationTarget.EXPRESSION)
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
@MustBeDocumented
annotation class Ann(val s1: String, val i: Int)
@Target(AnnotationTarget.VALUE_PARAMETER)
@Retention(AnnotationRetention.RUNTIME)
@MustBeDocumented
annotation class Field(val s1: String)
@Target(AnnotationTarget.VALUE_PARAMETER)
@Retention(AnnotationRetention.RUNTIME)
@MustBeDocumented
annotation class QField(val s2: String)
@Ann(s1 = "123", i = -1)
class MyTest {
fun addRoute(@Field(s1 = "111") @QField(s2 = "555") url: String) {
}
}
fun main() {
var myTest = MyTest()
var cls = myTest.javaClass
var methods = cls.declaredMethods
methods.forEach { method ->
//获取方法上的所有的注解
var methodAnnotations = method.getAnnotations();
//获得方法参数的所有的注解 (一个参数可以有多个注解,一个方法又会有多个参数)
var parameterAnnotations = method.getParameterAnnotations();
parameterAnnotations.forEachIndexed { index, annotations ->
// 一个参数上的所有的注解
val annotations = parameterAnnotations[index]
annotations.forEach {
if (it is Field){
println("---- = ${it.s1}")
}else if (it is QField){
println("---- = ${it.s2}")
}
}
}
var a=0
}
// var annts=cls.annotations
// annts.forEach {
// it->
// if (it is Ann){
// println("------it = ${it}")
// }
// }
}
\ No newline at end of file
package com.sd.maplibrary.base
import androidx.appcompat.app.AppCompatActivity
import com.sd.maplibrary.ui.dialog.LoadDialogFragment
open class BaseActivity: AppCompatActivity() {
private var loadDialogFragment: LoadDialogFragment? = null
fun showLoading(msg: String) {
// loadDialogFragment?.dismiss()
loadDialogFragment = LoadDialogFragment.newInstance(msg)
loadDialogFragment?.show(supportFragmentManager, "loadDialog")
}
fun dismisLoading() {
loadDialogFragment?.dismissNow()
}
}
\ No newline at end of file
package com.sd.maplibrary.base
import androidx.fragment.app.Fragment
import com.sd.maplibrary.ui.dialog.LoadDialogFragment
open class BaseFragment: Fragment() {
private var loadDialogFragment: LoadDialogFragment? = null
fun showLoading(msg: String) {
// loadDialogFragment?.dismiss()
loadDialogFragment = LoadDialogFragment.newInstance(msg)
loadDialogFragment?.show(parentFragmentManager, "loadDialog")
}
fun dismisLoading() {
loadDialogFragment?.dismissNow()
}
}
\ No newline at end of file
package com.sd.maplibrary.core
import com.minedata.minenavi.map.MyLocationStyle
import com.sd.maplibrary.MAP_TYPE
import com.sd.maplibrary.MSDKInitializer
import com.amap.api.maps.model.MyLocationStyle as aMapMyLocationStyle
/***显示定位小圆点**/
object MSLocationStyle {
// const val LOCATION_TYPE_EXTERNAL: Int = 0
// const val LOCATION_TYPE_SHOW: Int = 1
const val LOCATION_TYPE_LOCATE: Int = 2
const val LOCATION_TYPE_FOLLOW: Int = 3
const val LOCATION_TYPE_MAP_ROTATE: Int = 4
const val LOCATION_TYPE_LOCATION_ROTATE: Int = 5
const val LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER: Int = 6
const val LOCATION_TYPE_FOLLOW_NO_CENTER: Int = 7
const val LOCATION_TYPE_MAP_ROTATE_NO_CENTER: Int = 8
private var styleMap = mapOf(
LOCATION_TYPE_LOCATE to aMapMyLocationStyle.LOCATION_TYPE_LOCATE,
LOCATION_TYPE_FOLLOW to aMapMyLocationStyle.LOCATION_TYPE_FOLLOW,
LOCATION_TYPE_MAP_ROTATE to aMapMyLocationStyle.LOCATION_TYPE_MAP_ROTATE,
LOCATION_TYPE_LOCATION_ROTATE to aMapMyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE,
LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER to aMapMyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER,
LOCATION_TYPE_FOLLOW_NO_CENTER to aMapMyLocationStyle.LOCATION_TYPE_FOLLOW_NO_CENTER,
LOCATION_TYPE_MAP_ROTATE_NO_CENTER to aMapMyLocationStyle.LOCATION_TYPE_MAP_ROTATE_NO_CENTER
)
// myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_SHOW);//只定位一次。
// myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE) ;//定位一次,且将视角移动到地图中心点。
// myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_FOLLOW) ;//连续定位、且将视角移动到地图中心点,定位蓝点跟随设备移动。(1秒1次定位)
// myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_MAP_ROTATE);//连续定位、且将视角移动到地图中心点,地图依照设备方向旋转,定位点会跟随设备移动。(1秒1次定位)
// myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);//连续定位、且将视角移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。(1秒1次定位)默认执行此种模式。
////以下三种模式从5.1.0版本开始提供
// myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER);//连续定位、蓝点不会移动到地图中心点,定位点依照设备方向旋转,并且蓝点会跟随设备移动。
// myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_FOLLOW_NO_CENTER);//连续定位、蓝点不会移动到地图中心点,并且蓝点会跟随设备移动。
// myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_MAP_ROTATE_NO_CENTER);//连续定位、蓝点不会移动到地图中心点,地图依照设备方向旋转,并且蓝点会跟随设备移动。
// 四维初始化定位蓝点样式类
private val myLocationStyle: MyLocationStyle by lazy { MyLocationStyle() }
//高德初始化定位蓝点样式类
private val aMyLocationStyle by lazy { aMapMyLocationStyle() }
fun setLocationStyle(mapReadView: MapReadyView?, type: Int = LOCATION_TYPE_LOCATION_ROTATE) {
when (MSDKInitializer.getMapType()) {
MAP_TYPE.MINE -> {
var mMineMap = mapReadView?.mMineMap
// 连续定位、且将视角移动到地图中心点,定位点依照设备方向旋转,并且会跟随设备移动。(1秒1次定位)如果不设置myLocationType,默认也会执行此种模式。
myLocationStyle.myLocationType(type)
// 设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒。
myLocationStyle.interval(2000)
// 设置为true表示显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是true。
myLocationStyle.showMyLocation(true)
mMineMap?.setMyLocationStyle(myLocationStyle)
}
MAP_TYPE.AMAP -> {
var aMap = mapReadView?.amap
aMyLocationStyle.myLocationType(styleMap.get(type)!!)
aMyLocationStyle.interval(2000) //设置连续定位模式下的定位间隔,只在连续定位模式下生效,单次定位模式下不会生效。单位为毫秒。
//aMap.getUiSettings().setMyLocationButtonEnabled(true);设置默认定位按钮是否显示,非必需设置。
aMap?.setMyLocationEnabled(true) // 设置为true表示启动显示定位蓝点,false表示隐藏定位蓝点并不进行定位,默认是false。
aMap?.setMyLocationStyle(aMyLocationStyle)//设置定位蓝点的Style
}
}
}
}
\ No newline at end of file
package com.sd.maplibrary.core
import com.amap.api.maps.AMap
import com.minedata.minenavi.map.MineMap
class MapReadyView private constructor(){
companion object {
val instance by lazy { MapReadyView() }
}
var mMineMap: MineMap? = null
var amap: AMap? = null
}
\ No newline at end of file
package com.sd.maplibrary.fragments package com.sd.maplibrary.fragments
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.sd.maplibrary.R import androidx.fragment.app.Fragment
import com.amap.api.maps.AMap
import com.sd.maplibrary.core.MapReadyView
import com.sd.maplibrary.databinding.FragmentAMapBinding
import com.sd.maplibrary.ui.MapMultiView
import com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
//private const val ARG_PARAM1 = "param1" //private const val ARG_PARAM1 = "param1"
...@@ -26,14 +31,63 @@ class AMapFragment : Fragment() { ...@@ -26,14 +31,63 @@ class AMapFragment : Fragment() {
// } // }
// } // }
lateinit var binding: FragmentAMapBinding
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View? { ): View? {
// Inflate the layout for this fragment // Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_a_map, container, false) binding = FragmentAMapBinding.inflate(inflater, container, false)
return binding.root
}
private lateinit var aMap: AMap
private var onMapReadyLis: OnMapReadyLis? = null
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.mMapView.onCreate(savedInstanceState)
aMap = binding.mMapView.map
MapReadyView.instance.amap = aMap
onMapReadyLis?.onMapReady(MapReadyView.instance)
}
fun addMapRenderCallback(onMapReadyLis: OnMapReadyLis) {
this.onMapReadyLis=onMapReadyLis
} }
fun getAnyMap(): Any? {
return aMap
}
override fun onResume() {
super.onResume()
binding.mMapView.onResume()
}
override fun onPause() {
super.onPause()
binding.mMapView.onPause()
}
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
binding.mMapView.onSaveInstanceState(outState)
}
override fun onDestroy() {
super.onDestroy()
binding.mMapView.onDestroy()
}
companion object { companion object {
@JvmStatic @JvmStatic
......
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