增加经纬度定位功能

This commit is contained in:
squallzhjch 2023-05-26 14:01:36 +08:00
parent 59bc0f544b
commit 10ec7a1e04
3 changed files with 36 additions and 11 deletions

View File

@ -4,11 +4,12 @@ import android.app.Activity
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.os.PersistableBundle
import android.speech.tts.TextToSpeech
import android.util.Log
import android.view.MotionEvent
import android.view.View
import android.widget.EditText
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
import androidx.annotation.RequiresApi
@ -18,9 +19,7 @@ import androidx.lifecycle.lifecycleScope
import androidx.navigation.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.blankj.utilcode.util.SPStaticUtils
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.navinfo.collect.library.map.NIMapController
import com.navinfo.omqs.Constant
import com.navinfo.omqs.R
@ -29,12 +28,11 @@ import com.navinfo.omqs.databinding.ActivityMainBinding
import com.navinfo.omqs.http.offlinemapdownload.OfflineMapDownloadManager
import com.navinfo.omqs.tools.LayerConfigUtils
import com.navinfo.omqs.ui.activity.BaseActivity
import com.navinfo.omqs.ui.widget.RecycleViewDivider
import com.navinfo.omqs.ui.widget.RecyclerViewSpacesItemDecoration
import com.navinfo.omqs.util.FlowEventBus
import com.navinfo.omqs.util.SpeakMode
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import com.navinfo.omqs.ui.widget.RecyclerViewSpacesItemDecoration
import com.navinfo.omqs.util.SpeakMode
import org.videolan.vlc.Util
import java.math.BigDecimal
import java.math.RoundingMode
@ -217,6 +215,34 @@ class MainActivity : BaseActivity() {
}
}
}
//根据输入的经纬度跳转坐标
fun jumpPosition() {
val view = this.layoutInflater.inflate(R.layout.dialog_view_edittext, null)
val inputDialog = MaterialAlertDialogBuilder(
this
).setTitle("标记原因").setView(view)
var editText = view.findViewById<EditText>(R.id.dialog_edittext)
editText.hint = "请输入经纬度例如116.1234567,39.1234567"
inputDialog.setNegativeButton("取消") { dialog, _ ->
dialog.dismiss()
}
inputDialog.setPositiveButton("确定") { dialog, _ ->
if (editText.text.isNotEmpty()) {
try {
val parts = editText.text.split(",")
if (parts.size == 2) {
val x = parts[0].toDouble()
val y = parts[0].toDouble()
mapController.animationHandler.animationByLatLon(y, x)
}
} catch (e: Exception) {
Toast.makeText(this, "输入格式不正确", Toast.LENGTH_SHORT).show()
}
}
}
inputDialog.show()
}
override fun onStart() {
super.onStart()

View File

@ -124,7 +124,7 @@ class EvaluationResultViewModel @Inject constructor(
geoPoint?.let {
liveDataQsRecordBean.value!!.geometry = GeometryTools.createGeometry(it).toText()
mapController.markerHandle.addMarker(geoPoint, markerTitle)
mapController.animationHandler.animationByLonLat(
mapController.animationHandler.animationByLatLon(
geoPoint.latitude, geoPoint.longitude
)
viewModelScope.launch {
@ -147,7 +147,7 @@ class EvaluationResultViewModel @Inject constructor(
}
val point = GeometryTools.createGeoPoint(bean.geometry)
this.geometry = GeometryTools.createGeometry(point).toText()
mapController.animationHandler.animationByLonLat(point.latitude, point.longitude)
mapController.animationHandler.animationByLatLon(point.latitude, point.longitude)
mapController.markerHandle.addMarker(point, markerTitle)
}
}

View File

@ -1,6 +1,5 @@
package com.navinfo.collect.library.map.handler
import android.content.Context
import androidx.appcompat.app.AppCompatActivity
import com.navinfo.collect.library.map.NIMapView
import org.oscim.core.BoundingBox
@ -32,7 +31,7 @@ open class AnimationHandler(context: AppCompatActivity, mapView: NIMapView) :
* latitude longitude经纬度
**
*/
fun animationByLonLat(latitude: Double, longitude: Double, time: Long = 200) {
fun animationByLatLon(latitude: Double, longitude: Double, time: Long = 200) {
mMapView.vtmMap.animator().animateTo(time, GeoPoint(latitude, longitude))
}