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

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

parent b785e7cb
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AndroidTestResultsUserPreferences">
<option name="androidTestResultsTableState">
<map>
<entry key="-390304764">
<value>
<AndroidTestResultsTableState>
<option name="preferredColumnWidths">
<map>
<entry key="Duration" value="90" />
<entry key="Tests" value="360" />
<entry key="Xiaomi 23043RP34C" value="120" />
</map>
</option>
</AndroidTestResultsTableState>
</value>
</entry>
</map>
</option>
</component>
</project>
\ No newline at end of file
...@@ -5,6 +5,9 @@ ...@@ -5,6 +5,9 @@
<SelectionState runConfigName="app"> <SelectionState runConfigName="app">
<option name="selectionMode" value="DROPDOWN" /> <option name="selectionMode" value="DROPDOWN" />
</SelectionState> </SelectionState>
<SelectionState runConfigName="testAnnotation()">
<option name="selectionMode" value="DROPDOWN" />
</SelectionState>
</selectionStates> </selectionStates>
</component> </component>
</project> </project>
\ No newline at end of file
...@@ -34,7 +34,7 @@ android { ...@@ -34,7 +34,7 @@ android {
jvmTarget = "11" jvmTarget = "11"
} }
buildFeatures { buildFeatures {
// dataBinding = true dataBinding = true
viewBinding = true viewBinding = true
} }
} }
...@@ -53,4 +53,6 @@ dependencies { ...@@ -53,4 +53,6 @@ dependencies {
androidTestImplementation(libs.androidx.espresso.core) androidTestImplementation(libs.androidx.espresso.core)
implementation(project(":maplibrary")) implementation(project(":maplibrary"))
// https://github.com/CymChad/BaseRecyclerViewAdapterHelper/ RecyclerView 适配器
implementation("io.github.cymchad:BaseRecyclerViewAdapterHelper4:4.1.7")
} }
\ No newline at end of file
...@@ -13,6 +13,21 @@ ...@@ -13,6 +13,21 @@
android:theme="@style/Theme.MapMultiEngine" android:theme="@style/Theme.MapMultiEngine"
tools:targetApi="31"> tools:targetApi="31">
<!-- <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" />-->
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
......
package com.sd.mapmultiengine package com.sd.mapmultiengine
import android.os.Bundle import android.os.Bundle
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.sd.maplibrary.MAP_TYPE import com.sd.maplibrary.MAP_TYPE
import com.sd.maplibrary.MSDKInitializer import com.sd.maplibrary.MSDKInitializer
import com.sd.maplibrary.OnSdkInitCb import com.sd.maplibrary.OnSdkInitCb
import com.sd.maplibrary.core.MapReadyView
import com.sd.maplibrary.ui.MapMultiView.OnMapReadyLis
import com.sd.maplibrary.vms.MainVM
import com.sd.mapmultiengine.databinding.ActivityMainBinding import com.sd.mapmultiengine.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() { class MainActivity : AppCompatActivity() {
// val yy:Yy by viewModels() // val yy:Yy by viewModels()
val mainVM: MainVM by viewModels()
private lateinit var binding: ActivityMainBinding private lateinit var binding: ActivityMainBinding
var mapReadView: MapReadyView? = null
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
// enableEdgeToEdge() // enableEdgeToEdge()
...@@ -23,22 +30,30 @@ class MainActivity : AppCompatActivity() { ...@@ -23,22 +30,30 @@ class MainActivity : AppCompatActivity() {
// v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) // v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
// insets // insets
// } // }
initMap() initMap()
test()
}
fun test() {
binding.mapMultiView.addMapRenderCallback(object : OnMapReadyLis {
override fun onMapReady(mapReadyView: MapReadyView) {
this@MainActivity.mapReadView = mapReadyView
//显示定位蓝点
mainVM.showMyLocLandian(this@MainActivity.mapReadView)
}
})
} }
fun initMap() { fun initMap() {
MSDKInitializer.initializeMap(this, MAP_TYPE.MINE, object : OnSdkInitCb{ MSDKInitializer.initializeMap(this, MAP_TYPE.MINE, object : OnSdkInitCb {
override fun onInitSuccess(map_type: MAP_TYPE) { override fun onInitSuccess() {
println("--------onMapInitSuccess---map_type = ${map_type}") println("--------onMapInitSuccess}")
} }
override fun onInitFailed(msg: String?) { override fun onInitFailed(msg: String) {
} }
override fun onPerDenied() {
}
}) })
} }
......
package com.sd.mapmultiengine
import androidx.lifecycle.ViewModel
class Yy:ViewModel() {
}
\ No newline at end of file
package com.sd.maplibrary.adapter package com.sd.mapmultiengine.adapter
//import kotlinx.android.synthetic.main.poi_search_list_item.view.* //import kotlinx.android.synthetic.main.poi_search_list_item.view.*
import android.content.Context import android.content.Context
...@@ -11,9 +11,10 @@ import androidx.core.text.set ...@@ -11,9 +11,10 @@ import androidx.core.text.set
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.chad.library.adapter4.BaseQuickAdapter import com.chad.library.adapter4.BaseQuickAdapter
import com.minedata.minenavi.addons.DistanceBean import com.minedata.minenavi.addons.DistanceBean
import com.sd.maplibrary.bean.PoiSearchBean import com.sd.mapmultiengine.bean.PoiSearchBean
import com.sd.maplibrary.databinding.PoiSearchListItemBinding
import com.sd.maplibrary.utils.MyGeoTools import com.sd.mapmultiengine.databinding.PoiSearchListItemBinding
import com.sd.mapmultiengine.utils.MyGeoTools
class PoiAdapter : BaseQuickAdapter<PoiSearchBean, PoiAdapter.PoiSH>() { class PoiAdapter : BaseQuickAdapter<PoiSearchBean, PoiAdapter.PoiSH>() {
...@@ -38,11 +39,8 @@ class PoiAdapter : BaseQuickAdapter<PoiSearchBean, PoiAdapter.PoiSH>() { ...@@ -38,11 +39,8 @@ class PoiAdapter : BaseQuickAdapter<PoiSearchBean, PoiAdapter.PoiSH>() {
) )
) : RecyclerView.ViewHolder(binding.root) { ) : RecyclerView.ViewHolder(binding.root) {
private var poi_title = binding.poiTitle private var poi_title = binding.poiTitle
private var tv_num = binding.tvNum
fun show(bean: PoiSearchBean) { fun show(bean: PoiSearchBean) {
tv_num.text = (bindingAdapterPosition + 1).toString()
if (usrSearchStr.isNotEmpty()) { if (usrSearchStr.isNotEmpty()) {
var tempStr = bean.title var tempStr = bean.title
var star = tempStr.indexOf(usrSearchStr) var star = tempStr.indexOf(usrSearchStr)
......
package com.sd.maplibrary.bean package com.sd.mapmultiengine.bean
class MyLocBean { class MyLocBean {
// 返回逆地理编码结果所在区(县)的编码。 // 返回逆地理编码结果所在区(县)的编码。
......
package com.sd.maplibrary.bean package com.sd.mapmultiengine.bean
/**搜索poi**/ /**搜索poi**/
class PoiSearchBean { class PoiSearchBean {
......
package com.sd.mapmultiengine.utils
import android.app.Activity
import android.content.Context
import android.content.res.Configuration
import android.content.res.Resources
import android.os.Build
import android.provider.Settings
import android.util.DisplayMetrics
import android.util.TypedValue
import android.view.View
import android.view.View.MeasureSpec
/**
*author:pc-20171125
*data:2019/11/7 16:08
*/
object DisplayUtil {
fun getDpi(): Int {
return Resources.getSystem().displayMetrics.densityDpi
}
fun px2dp(pxValue: Float): Int {
val scale = Resources.getSystem().displayMetrics.density
return (pxValue / scale + 0.5f).toInt()
}
fun dp2px(dipValue: Float): Int {
val scale = Resources.getSystem().displayMetrics.density
return (dipValue * scale + 0.5f).toInt()
}
fun px2sp(pxValue: Float): Int {
val fontScale = Resources.getSystem().displayMetrics.scaledDensity
return (pxValue / fontScale + 0.5f).toInt()
}
fun sp2px(spValue: Float): Int {
val fontScale = Resources.getSystem().displayMetrics.scaledDensity
return (spValue * fontScale + 0.5f).toInt()
}
fun getScreenWidthDp(): Int {
val displayMetrics = Resources.getSystem().displayMetrics
val widthPixels = displayMetrics.widthPixels
val density = displayMetrics.density
return Math.round(widthPixels / density)
}
fun getScreenWidthPx(): Int {
val displayMetrics = Resources.getSystem().displayMetrics
return displayMetrics.widthPixels
}
fun getScreenHeightDp(): Int {
val displayMetrics = Resources.getSystem().displayMetrics
val heightPixels = displayMetrics.heightPixels
val density = displayMetrics.density
return Math.round(heightPixels / density)
}
fun getScreenHeightPx(): Int {
val displayMetrics = Resources.getSystem().displayMetrics
return displayMetrics.heightPixels
}
fun forceMeasure(view: View) {
val widthMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)
val heightMeasureSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)
view.measure(widthMeasureSpec, heightMeasureSpec)
}
private val mTmpValue = TypedValue()
fun getXmlDef(context: Context, id: Int): Int {
synchronized(mTmpValue) {
val value: TypedValue = mTmpValue
context.resources.getValue(id, value, true)
return TypedValue.complexToFloat(value.data).toInt()
}
}
fun getNavigationBarHeight(context: Context): Int {
val mInPortrait =
context.resources.configuration.orientation == Configuration.ORIENTATION_PORTRAIT
val result = 0
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
if (hasNavBar(context as Activity)) {
val key: String
if (mInPortrait) {
key = "navigation_bar_height"
} else {
key = "navigation_bar_height_landscape"
}
return getInternalDimensionSize(context, key)
}
}
return result
}
private fun hasNavBar(activity: Activity): Boolean {
//判断小米手机是否开启了全面屏,开启了,直接返回false
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
if (Settings.Global.getInt(activity.contentResolver, "force_fsg_nav_bar", 0) != 0) {
return false
}
}
//其他手机根据屏幕真实高度与显示高度是否相同来判断
val windowManager = activity.windowManager
val d = windowManager.defaultDisplay
val realDisplayMetrics = DisplayMetrics()
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
d.getRealMetrics(realDisplayMetrics)
}
val realHeight = realDisplayMetrics.heightPixels
val realWidth = realDisplayMetrics.widthPixels
val displayMetrics = DisplayMetrics()
d.getMetrics(displayMetrics)
val displayHeight = displayMetrics.heightPixels
val displayWidth = displayMetrics.widthPixels
return realWidth - displayWidth > 0 || realHeight - displayHeight > 0
}
private fun getInternalDimensionSize(context: Context, key: String): Int {
var result = 0
try {
val resourceId = context.resources.getIdentifier(key, "dimen", "android")
if (resourceId > 0) {
result =
Math.round(context.resources.getDimensionPixelSize(resourceId) * Resources.getSystem().displayMetrics.density / context.resources.displayMetrics.density)
}
} catch (ignored: Resources.NotFoundException) {
return 0
}
return result
}
}
\ No newline at end of file
package com.sd.maplibrary.utils package com.sd.mapmultiengine.utils
object MyContants { object MyContants {
const val IS_DEBUG = true const val IS_DEBUG = true
......
package com.sd.maplibrary.utils package com.sd.mapmultiengine.utils
import android.location.Location import android.location.Location
import com.minedata.minenavi.addons.DistanceBean import com.minedata.minenavi.addons.DistanceBean
......
package com.sd.maplibrary.utils package com.sd.mapmultiengine.utils
import android.app.Activity import android.app.Activity
import android.app.ActivityManager import android.app.ActivityManager
......
package com.sd.mapmultiengine.utils
import android.content.Context
import android.widget.Toast
object ToastHelper {
/**
* 短时间显示Toast
*/
fun showShort(context: Context, message: String) {
Toast.makeText(context, message, Toast.LENGTH_SHORT).run {
show()
}
}
}
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
* *
* You may also get a copy of the license at http://navicore.cn/license/NC_MIT_0.1 * You may also get a copy of the license at http://navicore.cn/license/NC_MIT_0.1
**********************************************************************************************************************************/ **********************************************************************************************************************************/
package com.sd.maplibrary.utils; package com.sd.mapmultiengine.utils;
import android.annotation.TargetApi; import android.annotation.TargetApi;
import android.app.Activity; import android.app.Activity;
......
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