修改地图卡顿

修改新增link线型编辑
This commit is contained in:
squallzhjch
2023-07-18 10:49:56 +08:00
parent e3695fb6cb
commit 45e3e3ca0d
14 changed files with 298 additions and 95 deletions

View File

@@ -1690,7 +1690,7 @@
<m k="speedFlag" v="1">
<caption fill="#000000" k="maxSpeed" priority="0" size="12" stroke="#ffffff"
stroke-width="1.0"></caption>
<symbol src="assets:omdb/icon_4004_1.png" symbol-height="46"
<symbol src="assets:omdb/icon_4004_0.svg" symbol-height="46"
symbol-width="46"></symbol>
<!-- <caption k="minSpeed" dy="-28" fill="#000000" priority="0" size="14" stroke="#ffffff"-->
<!-- stroke-width="1.0"></caption>-->

View File

@@ -1,12 +1,13 @@
package com.navinfo.collect.library.data.entity
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey
open class HadLinkDvoBean @JvmOverloads constructor(
// /**
// * 任务id方便捕捉查询
// */
// var taskId: Int = 0,
/**
* 任务id方便捕捉查询
*/
var taskId: Int = 0,
/**
* 图幅号
*/
@@ -14,6 +15,7 @@ open class HadLinkDvoBean @JvmOverloads constructor(
/**
* linkPid
*/
@PrimaryKey
var linkPid: String = "",
/**
* (几何)加偏后

View File

@@ -1,6 +1,5 @@
package com.navinfo.collect.library.map
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import com.navinfo.collect.library.map.handler.*

View File

@@ -1,6 +1,6 @@
package com.navinfo.collect.library.map.handler
import android.content.Context
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.navinfo.collect.library.map.NIMapView
import org.oscim.layers.Layer
@@ -10,6 +10,7 @@ abstract class BaseHandler(context: AppCompatActivity, mapView: NIMapView) {
protected val mMapView: NIMapView = mapView
fun addLayer(layer: Layer, groupType: NIMapView.LAYER_GROUPS) {
Log.e("jingo", "增加了图层 ${layer.toString()}")
mMapView.vtmMap.layers().add(
layer,
groupType.groupIndex
@@ -17,11 +18,11 @@ abstract class BaseHandler(context: AppCompatActivity, mapView: NIMapView) {
}
fun removeLayer(layer: Layer) {
Log.e("jingo", "移除了图层 ${layer.toString()}")
mMapView.vtmMap.layers().remove(layer)
}
// fun setOnMapClickListener(listener: NIMapView.OnMapClickListener) {
// mMapView.setOnMapClickListener(listener)
// }

View File

@@ -36,6 +36,7 @@ class LineHandler(context: AppCompatActivity, mapView: NIMapView) : BaseHandler(
onTaskLinkItemClickListener = listener
}
/**
* 路口高亮
*/
@@ -183,6 +184,12 @@ class LineHandler(context: AppCompatActivity, mapView: NIMapView) : BaseHandler(
* 增加一条任务高亮线
*/
fun addTaskLink(linkBean: HadLinkDvoBean) {
for (marker in omdbTaskMarkerLayer.itemList) {
if ((marker as MarkerItem).title == linkBean.linkPid) {
omdbTaskMarkerLayer.removeItem(marker)
break
}
}
if (linkBean.linkStatus == 3) {
val pointList = GeometryTools.getGeoPoints(linkBean.geometry)
val geoPoint = if (pointList.size < 3) {
@@ -197,7 +204,10 @@ class LineHandler(context: AppCompatActivity, mapView: NIMapView) : BaseHandler(
)
omdbTaskMarkerLayer.addItem(marker)
}
omdbTaskLinkLayer.removeLine(linkBean.linkPid)
omdbTaskLinkLayer.addLine(linkBean)
omdbTaskLinkLayer.update()
mMapView.vtmMap.updateMap(true)
}
/**
@@ -211,6 +221,8 @@ class LineHandler(context: AppCompatActivity, mapView: NIMapView) : BaseHandler(
}
}
omdbTaskLinkLayer.removeLine(linkBeanId)
omdbTaskLinkLayer.update()
mMapView.vtmMap.updateMap(true)
}
}

View File

@@ -12,6 +12,7 @@ import com.baidu.location.LocationClientOption.LocationMode
import com.navinfo.collect.library.data.entity.NiLocation
import com.navinfo.collect.library.map.NIMapView
import com.navinfo.collect.library.utils.DateUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.launch
import org.oscim.core.GeoPoint
@@ -29,7 +30,7 @@ class LocationLayerHandler(context: AppCompatActivity, mapView: NIMapView) :
//
// }
val niLocationFlow = MutableSharedFlow<NiLocation>(5)
val niLocationFlow = MutableSharedFlow<NiLocation>(3)
init {
///添加定位图层到地图,[NIMapView.LAYER_GROUPS.NAVIGATION] 是最上层layer组
@@ -72,10 +73,10 @@ class LocationLayerHandler(context: AppCompatActivity, mapView: NIMapView) :
// )
// if (niLocationListener != null) {
getCurrentNiLocation()?.let { it1 ->
mContext.lifecycleScope.launch {
niLocationFlow.emit(it1)
}
getCurrentNiLocation()?.let { it1 ->
mContext.lifecycleScope.launch(Dispatchers.Default) {
niLocationFlow.emit(it1)
}
// }// niLocationListener.call(it1) }
}

View File

@@ -5,6 +5,7 @@ import android.content.SharedPreferences
import android.graphics.BitmapFactory
import android.graphics.Canvas
import android.graphics.Color
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.res.ResourcesCompat
import androidx.lifecycle.lifecycleScope
@@ -536,58 +537,67 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
* 添加质检数据marker
*/
public suspend fun addNiLocationMarkerItem(niLocation: NiLocation) {
synchronized(this) {
Log.e("jingo", "插入定位点0 ")
var itemizedLayer: ItemizedLayer? = null
var itemizedLayer: ItemizedLayer? = null
val direction: Double = niLocation.direction
val direction: Double = niLocation.direction
val geoMarkerItem: MarkerItem = ClusterMarkerItem(
niLocation,
niLocation.id,
niLocation.time,
GeoPoint(niLocation.latitude, niLocation.longitude)
)
val geoMarkerItem: MarkerItem = ClusterMarkerItem(
niLocation,
niLocation.id,
niLocation.time,
GeoPoint(niLocation.latitude, niLocation.longitude)
)
//角度
when (niLocation.media) {
0 -> {
//角度不为0时需要预先设置marker样式并进行角度设置否则使用图层默认的sym即可
//角度不为0时需要预先设置marker样式并进行角度设置否则使用图层默认的sym即可
if (direction != 0.0) {
val symbolGpsTemp =
MarkerSymbol(niLocationBitmap, MarkerSymbol.HotspotPlace.CENTER, false)
geoMarkerItem.marker = symbolGpsTemp
geoMarkerItem.setRotation(direction.toFloat())
} else {
val symbolGpsTemp =
MarkerSymbol(niLocationBitmap2, MarkerSymbol.HotspotPlace.CENTER, false)
geoMarkerItem.marker = symbolGpsTemp
//角度
when (niLocation.media) {
0 -> {
//角度不为0时需要预先设置marker样式并进行角度设置否则使用图层默认的sym即可
//角度不为0时需要预先设置marker样式并进行角度设置否则使用图层默认的sym即可
if (direction != 0.0) {
val symbolGpsTemp =
MarkerSymbol(niLocationBitmap, MarkerSymbol.HotspotPlace.CENTER, false)
geoMarkerItem.marker = symbolGpsTemp
geoMarkerItem.setRotation(direction.toFloat())
} else {
val symbolGpsTemp =
MarkerSymbol(niLocationBitmap2, MarkerSymbol.HotspotPlace.CENTER, false)
geoMarkerItem.marker = symbolGpsTemp
}
Log.e(
"jingo",
"插入定位点1 ${geoMarkerItem.geoPoint.longitude} ${geoMarkerItem.geoPoint.latitude}"
)
niLocationItemizedLayer.addItem(geoMarkerItem)
itemizedLayer = niLocationItemizedLayer
}
niLocationItemizedLayer.addItem(geoMarkerItem)
itemizedLayer = niLocationItemizedLayer
}
1 -> {
//角度不为0时需要预先设置marker样式并进行角度设置否则使用图层默认的sym即可
//角度不为0时需要预先设置marker样式并进行角度设置否则使用图层默认的sym即可
if (direction != 0.0) {
val symbolLidarTemp =
MarkerSymbol(niLocationBitmap1, MarkerSymbol.HotspotPlace.CENTER, false)
geoMarkerItem.marker = symbolLidarTemp
geoMarkerItem.setRotation(direction.toFloat())
} else {
val symbolGpsTemp =
MarkerSymbol(niLocationBitmap3, MarkerSymbol.HotspotPlace.CENTER, false)
geoMarkerItem.marker = symbolGpsTemp
1 -> {
//角度不为0时需要预先设置marker样式并进行角度设置否则使用图层默认的sym即可
//角度不为0时需要预先设置marker样式并进行角度设置否则使用图层默认的sym即可
if (direction != 0.0) {
val symbolLidarTemp =
MarkerSymbol(niLocationBitmap1, MarkerSymbol.HotspotPlace.CENTER, false)
geoMarkerItem.marker = symbolLidarTemp
geoMarkerItem.setRotation(direction.toFloat())
} else {
val symbolGpsTemp =
MarkerSymbol(niLocationBitmap3, MarkerSymbol.HotspotPlace.CENTER, false)
geoMarkerItem.marker = symbolGpsTemp
}
Log.e(
"jingo",
"插入定位点2 ${geoMarkerItem.geoPoint.longitude} ${geoMarkerItem.geoPoint.latitude}"
)
niLocationItemizedLayer.addItem(geoMarkerItem)
itemizedLayer = niLocationItemizedLayer
}
niLocationItemizedLayer.addItem(geoMarkerItem)
itemizedLayer = niLocationItemizedLayer
}
}
itemizedLayer?.update()
}
itemizedLayer!!.update()
}

View File

@@ -3,11 +3,9 @@ package com.navinfo.collect.library.map.handler
import android.graphics.BitmapFactory
import android.graphics.Canvas
import android.graphics.Color
import android.os.Build
import android.text.TextPaint
import android.util.Log
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.MutableLiveData
import com.navinfo.collect.library.R
@@ -453,6 +451,32 @@ open class MeasureLayerHandler(context: AppCompatActivity, mapView: NIMapView) :
}
}
/**
* 初始化线数据, 用来二次编辑
*/
fun initPathLine(geometry: String) {
bDrawLine = true
mPathLayer.isEnabled = true
mPathLayerTemp.isEnabled = true
val pointList = GeometryTools.getGeoPoints(geometry)
mPathLayer.setPoints(pointList)
for (point in pointList) {
val markerItem = MarkerItem(createUUID(), "", "", point)
markerLayer.addItem(markerItem)
mPathMakers.add(markerItem)
}
if (mPathLayer.points.size > 1) {
val distance: Double = GeometryTools.getDistance(mPathLayer.points)
val bg = BigDecimal(distance)
val f1 = bg.setScale(3, BigDecimal.ROUND_HALF_UP).toDouble()
lineLengthLiveData.value = f1
tempLineDistanceLiveData.value = "${f1}"
} else {
lineLengthLiveData.value = 0.000
}
mMapView.updateMap(true)
}
private val itemGestureListener: OnItemGestureListener<MarkerInterface> =
object : OnItemGestureListener<MarkerInterface> {
override fun onItemSingleTapUp(index: Int, item: MarkerInterface): Boolean {

View File

@@ -59,12 +59,11 @@ class OmdbTaskLinkLayer(map: Map, private var style: Style) : VectorLayer(map) {
update()
}
fun removeLine(linkPid: String): Boolean {
fun removeLine(linkPid: String) {
if (lineMap.containsKey(linkPid)) {
super.remove(lineMap[linkPid])
lineMap.remove(linkPid)
}
return false
}
fun removeLine(geometry: Geometry) {