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
a4c149a6
Commit
a4c149a6
authored
Jul 11, 2025
by
p x
Browse files
集成初始化,显示地图,显示定位蓝点
parent
b785e7cb
Changes
58
Show whitespace changes
Inline
Side-by-side
m
ap
library
/src/main/res/drawable/btn_change_bg.xml
→
ap
p
/src/main/res/drawable/btn_change_bg.xml
View file @
a4c149a6
File moved
m
ap
library
/src/main/res/drawable/rect_white_10.xml
→
ap
p
/src/main/res/drawable/rect_white_10.xml
View file @
a4c149a6
File moved
app/src/main/res/layout/activity_main.xml
View file @
a4c149a6
...
...
@@ -10,7 +10,7 @@
android:id=
"@+id/mapMultiView"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
/>
app:map_type=
"MINE"
/>
</LinearLayout>
m
ap
library
/src/main/res/layout/poi_search_list_item.xml
→
ap
p
/src/main/res/layout/poi_search_list_item.xml
View file @
a4c149a6
...
...
@@ -9,17 +9,7 @@
android:paddingHorizontal=
"10dp"
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
android:layout_width=
"match_parent"
...
...
@@ -27,7 +17,6 @@
android:layout_centerVertical=
"true"
android:layout_marginLeft=
"5dp"
android:layout_toLeftOf=
"@+id/lin2"
android:layout_toRightOf=
"@id/tv_num"
android:layout_weight=
"1"
android:orientation=
"vertical"
>
...
...
m
ap
library
/src/main/res/layout/route_input_view.xml
→
ap
p
/src/main/res/layout/route_input_view.xml
View file @
a4c149a6
...
...
@@ -3,7 +3,7 @@
xmlns:tools=
"http://schemas.android.com/tools"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
tools:showIn=
"@layout/activity_search"
>
>
<ImageView
android:id=
"@+id/btn_swap"
...
...
@@ -37,7 +37,7 @@
android:background=
"@color/white"
android:gravity=
"right |center_vertical"
>
<
com.sd.maplibrary.ui.view.Cleanable
EditText
<EditText
android:id=
"@+id/et_end_place"
android:layout_width=
"0dp"
android:layout_weight=
"1"
...
...
m
ap
library
/src/main/res/layout/
activity_search
.xml
→
ap
p
/src/main/res/layout/
search_bot_dialog
.xml
View file @
a4c149a6
File moved
app/src/main/res/xml/network_security_config.xml
0 → 100644
View file @
a4c149a6
<?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>
gradle.properties
View file @
a4c149a6
...
...
@@ -21,4 +21,4 @@ kotlin.code.style=official
# resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library
android.nonTransitiveRClass
=
true
android.defaults.buildfeatures.databinding
=
true
\ No newline at end of file
#
android.defaults.buildfeatures.databinding
=
true
\ No newline at end of file
maplibrary/build.gradle.kts
View file @
a4c149a6
...
...
@@ -44,7 +44,7 @@ android {
//}
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
.
appcompat
)
implementation
(
libs
.
material
)
...
...
@@ -54,15 +54,14 @@ dependencies {
androidTestImplementation
(
libs
.
androidx
.
espresso
.
core
)
//网络
implementation
(
"com.squareup.retrofit2:retrofit:2.9.0"
)
implementation
(
"com.squareup.retrofit2:converter-gson:2.9.0"
)
//
implementation("com.squareup.retrofit2:retrofit:2.9.0")
//
implementation("com.squareup.retrofit2:converter-gson:2.9.0")
// 权限请求框架
implementation
(
"com.guolindev.permissionx:permissionx:1.8.1"
)
// ViewModel
implementation
(
"androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2"
)
//fragment-ktx
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
maplibrary/libs/AMapNav.aar
0 → 100644
View file @
a4c149a6
File added
maplibrary/src/androidTest/java/com/sd/maplibrary/ExampleInstrumentedTest.kt
View file @
a4c149a6
...
...
@@ -8,6 +8,8 @@ import org.junit.runner.RunWith
import
org.junit.Assert.*
/**
* Instrumented test, which will execute on an Android device.
*
...
...
@@ -21,4 +23,7 @@ class ExampleInstrumentedTest {
val
appContext
=
InstrumentationRegistry
.
getInstrumentation
().
targetContext
assertEquals
(
"com.sd.maplibrary.test"
,
appContext
.
packageName
)
}
}
maplibrary/src/main/AndroidManifest.xml
View file @
a4c149a6
...
...
@@ -18,15 +18,16 @@
<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:networkSecurityConfig=
"@xml/network_security_config"
android:supportsRtl=
"true"
>
<activity
android:name=
".ui.SearchActivity"
/>
<application>
<!-- android:supportsRtl="true">-->
<uses-library
android:name=
"org.apache.http.legacy"
...
...
@@ -35,6 +36,13 @@
<meta-data
android:name=
"com.minedata.minenavi.apikey"
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>
\ No newline at end of file
maplibrary/src/main/java/com/sd/maplibrary/MSDKInitializer.kt
View file @
a4c149a6
...
...
@@ -2,13 +2,14 @@ package com.sd.maplibrary
import
android.Manifest
import
android.content.Context
import
android.os.Build
import
androidx.fragment.app.FragmentActivity
import
com.amap.api.maps.MapsInitializer
import
com.minedata.minenavi.SDKInitializer
import
com.minedata.minenavi.SDKInitializer.InitListener
import
com.minedata.minenavi.mapdal.CoordType
import
com.minedata.minenavi.poiquery.SearchUrlType
import
com.permissionx.guolindev.PermissionX
import
com.sd.maplibrary.utils.ToastHelper
/**AMAP = 高德
...
...
@@ -20,7 +21,7 @@ enum class MAP_TYPE {
}
class
UserCtx
{
private
class
UserCtx
{
var
mContext
:
Context
?
=
null
var
map_type
:
MAP_TYPE
=
MAP_TYPE
.
MINE
...
...
@@ -32,21 +33,19 @@ class UserCtx {
interface
OnSdkInitCb
{
/***初始化成功**/
fun
onInitSuccess
(
map_type
:
MAP_TYPE
)
fun
onInitSuccess
()
/***初始化成失败**/
fun
onInitFailed
(
msg
:
String
?)
/***权限被拒**/
fun
onPerDenied
()
fun
onInitFailed
(
msg
:
String
)
}
object
MSDKInitializer
{
private
var
onSdkInitCb
:
OnSdkInitCb
?
=
null
fun
initializeMap
(
context
:
Context
,
map_type
:
MAP_TYPE
,
onSdkInitCb
:
OnSdkInitCb
?
)
{
this
@MSDKInitializer
.
onSdkInitCb
=
onSdkInitCb
fun
initializeMap
(
context
:
Context
,
map_type
:
MAP_TYPE
,
onSdkInitCb
:
OnSdkInitCb
)
{
this
.
onSdkInitCb
=
onSdkInitCb
UserCtx
.
instance
.
mContext
=
context
UserCtx
.
instance
.
map_type
=
map_type
requestPers
()
...
...
@@ -56,11 +55,14 @@ object MSDKInitializer {
return
UserCtx
.
instance
.
map_type
}
/**使用API初始化地图**/
private
fun
mapTypeInit
()
{
val
ctx
=
UserCtx
.
instance
.
mContext
when
(
UserCtx
.
instance
.
map_type
)
{
MAP_TYPE
.
AMAP
->
{
MapsInitializer
.
updatePrivacyShow
(
ctx
,
true
,
true
)
MapsInitializer
.
updatePrivacyAgree
(
ctx
,
true
)
onSdkInitCb
?.
onInitFailed
(
"高德不支持api初始化"
)
}
MAP_TYPE
.
MINE
->
{
...
...
@@ -71,10 +73,10 @@ object MSDKInitializer {
SDKInitializer
.
setSearchUrlType
(
SearchUrlType
.
v1
)
SDKInitializer
.
initialize
(
ctx
,
object
:
InitListener
{
override
fun
onInitSuccess
()
{
onSdkInitCb
?.
onInitSuccess
(
UserCtx
.
instance
.
map_type
)
onSdkInitCb
?.
onInitSuccess
()
}
override
fun
onInitFailed
(
msg
:
String
?
)
{
override
fun
onInitFailed
(
msg
:
String
)
{
onSdkInitCb
?.
onInitFailed
(
msg
)
}
})
...
...
@@ -87,19 +89,22 @@ object MSDKInitializer {
}
}
private
fun
requestPers
()
{
if
(
UserCtx
.
instance
.
mContext
is
FragmentActivity
)
{
var
list
=
l
istOf
(
var
pers
=
mutableL
istOf
(
Manifest
.
permission
.
ACCESS_COARSE_LOCATION
,
Manifest
.
permission
.
ACCESS_FINE_LOCATION
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
,
Manifest
.
permission
.
READ_EXTERNAL_STORAGE
,
Manifest
.
permission
.
READ_PHONE_STATE
,
Manifest
.
permission
.
ACCESS_BACKGROUND_LOCATION
Manifest
.
permission
.
ACCESS_BACKGROUND_LOCATION
,
Manifest
.
permission
.
READ_PHONE_STATE
)
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
)
.
permissions
(
list
)
.
permissions
(
pers
)
.
onExplainRequestReason
{
scope
,
deniedList
->
scope
.
showRequestReasonDialog
(
deniedList
,
...
...
@@ -115,9 +120,7 @@ object MSDKInitializer {
if
(
allGranted
)
{
mapTypeInit
()
}
else
{
ToastHelper
.
showShort
(
UserCtx
.
instance
.
mContext
!!
,
"权限被拒"
)
onSdkInitCb
?.
onPerDenied
()
onSdkInitCb
?.
onInitFailed
(
"权限被拒"
)
}
}
...
...
@@ -127,4 +130,5 @@ object MSDKInitializer {
}
}
\ No newline at end of file
maplibrary/src/main/java/com/sd/maplibrary/RetrofitMap.kt
0 → 100644
View file @
a4c149a6
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
maplibrary/src/main/java/com/sd/maplibrary/Test.kt
0 → 100644
View file @
a4c149a6
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
maplibrary/src/main/java/com/sd/maplibrary/base/BaseActivity.kt
deleted
100644 → 0
View file @
b785e7cb
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
maplibrary/src/main/java/com/sd/maplibrary/base/BaseFragment.kt
deleted
100644 → 0
View file @
b785e7cb
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
maplibrary/src/main/java/com/sd/maplibrary/core/MSLocationStyle.kt
0 → 100644
View file @
a4c149a6
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
maplibrary/src/main/java/com/sd/maplibrary/core/MapReadyView.kt
0 → 100644
View file @
a4c149a6
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
maplibrary/src/main/java/com/sd/maplibrary/fragments/AMapFragment.kt
View file @
a4c149a6
package
com.sd.maplibrary.fragments
import
android.os.Bundle
import
androidx.fragment.app.Fragment
import
android.view.LayoutInflater
import
android.view.View
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
//private const val ARG_PARAM1 = "param1"
...
...
@@ -26,14 +31,63 @@ class AMapFragment : Fragment() {
// }
// }
lateinit
var
binding
:
FragmentAMapBinding
override
fun
onCreateView
(
inflater
:
LayoutInflater
,
container
:
ViewGroup
?,
savedInstanceState
:
Bundle
?
):
View
?
{
// 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
{
@JvmStatic
...
...
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