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
Hide 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 @@
...
@@ -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>
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 @@
...
@@ -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"
>
...
...
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 @@
...
@@ -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.Cleanable
EditText
<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"
...
...
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
...
@@ -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
maplibrary/build.gradle.kts
View file @
a4c149a6
...
@@ -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
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
...
@@ -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
}
maplibrary/src/main/AndroidManifest.xml
View file @
a4c149a6
...
@@ -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
maplibrary/src/main/java/com/sd/maplibrary/MSDKInitializer.kt
View file @
a4c149a6
...
@@ -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
=
l
istOf
(
var
pers
=
mutableL
istOf
(
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
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
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
...
...
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