Răsfoiți Sursa

添加锁定站隔离点图标显示

Frankensteinly 7 luni în urmă
părinte
comite
1c0a213f88

+ 6 - 3
app/src/main/java/com/grkj/iscs/util/BitmapUtil.kt

@@ -56,12 +56,15 @@ object BitmapUtil {
         return stream.toByteArray()
     }
 
-    fun loadBitmapFromUrl(ctx: Context, url: String, callback: (Bitmap?) -> Unit) {
+    fun loadBitmapFromUrl(ctx: Context, url: String, reqWidth: Int? = null, reqHeight: Int? = null, callback: (Bitmap?) -> Unit) {
         try {
-            Glide.with(ctx)
+            val builder = Glide.with(ctx)
                 .asBitmap()
                 .load(url)
-                .listener(object : RequestListener<Bitmap> {
+                if (reqWidth != null && reqHeight != null) {
+                    builder.override(reqWidth, reqHeight)
+                }
+                builder.listener(object : RequestListener<Bitmap> {
                     override fun onLoadFailed(
                         e: GlideException?,
                         model: Any?,

+ 12 - 7
app/src/main/java/com/grkj/iscs/view/fragment/StepFragment.kt

@@ -223,14 +223,19 @@ class StepFragment(val goBack: () -> Unit, val changePage: (PageChangeBO) -> Uni
                             itMapInfo.pointList?.forEach { itPoint ->
                                 val locationX = (itPoint.x!!.toFloat() - (itMapInfo.x!!.toFloat() / 50))  * 50 / itMapInfo.width!!.toFloat() * it.width
                                 val locationY = (itPoint.y!!.toFloat() + 1 - itMapInfo.y!!.toFloat() / 50) * 50 / itMapInfo.height!!.toFloat() * it.height
-                                mStationList.add(
-                                    CustomStationLayer.IsolationPoint(
-                                        PointF(locationX, locationY),
-                                        itPoint.entityName!!,
-                                        itPoint.entityId!!,
-                                        mMachineryDetail?.pointIdList?.contains(itPoint.entityId) == true
+                                BitmapUtil.loadBitmapFromUrl(
+                                    mBinding?.mapview?.context!!, itPoint.pointIcon!!, 18, 18
+                                ) { itBitmap ->
+                                    mStationList.add(
+                                        CustomStationLayer.IsolationPoint(
+                                            PointF(locationX, locationY),
+                                            itPoint.entityName!!,
+                                            itBitmap,
+                                            itPoint.entityId!!,
+                                            mMachineryDetail?.pointIdList?.contains(itPoint.entityId) == true
+                                        )
                                     )
-                                )
+                                }
                             }
                             mBinding?.mapview?.loadMap(it)
                         }

+ 4 - 1
app/src/main/java/com/grkj/iscs/view/widget/CustomStationLayer.kt

@@ -106,6 +106,9 @@ class CustomStationLayer @JvmOverloads constructor(
                     paint.textSize = radiusMark
                     // 先画背景再画文字防止文字被盖住
                     canvas.drawBitmap(bgBitmap, goal[0] - bgBitmap.width / 2, goal[1] - 2 * radiusMark, paint)
+                    point.icon?.let {
+                        canvas.drawBitmap(it, goal[0] - it.width / 2, goal[1] - 2  * radiusMark, paint)
+                    }
                     // 一直显示文字
                     canvas.drawText(
                         point.entityName,
@@ -150,5 +153,5 @@ class CustomStationLayer @JvmOverloads constructor(
         fun markIsClick(index: Int, btnIndex: Int)
     }
 
-    data class IsolationPoint(val pos: PointF, val entityName: String, val entityId: Long, val isSelected: Boolean)
+    data class IsolationPoint(val pos: PointF, val entityName: String, val icon: Bitmap?, val entityId: Long, val isSelected: Boolean)
 }