18034727885
2026-08-18 6f2d06f779b9af1b179aa5be930f675db860816d
修复问题
2个文件已修改
54 ■■■■■ 已修改文件
app/src/main/java/com/igo/user/ui/trip/TripActivity.kt 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/utils/google/AMapKit.kt 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/trip/TripActivity.kt
@@ -4,7 +4,6 @@
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Bitmap
import android.graphics.Color
import android.os.Bundle
import android.os.Handler
import android.os.Message
@@ -42,7 +41,6 @@
import com.google.android.gms.maps.model.Marker
import com.google.android.gms.maps.model.MarkerOptions
import com.google.android.gms.maps.model.Polyline
import com.google.android.gms.maps.model.PolylineOptions
import com.google.android.libraries.mapsplatform.transportation.consumer.ConsumerApi
import com.google.android.libraries.mapsplatform.transportation.consumer.managers.TripModelCallback
import com.google.android.libraries.mapsplatform.transportation.consumer.model.MarkerType
@@ -686,16 +684,19 @@
    private fun drawLine() {
        if (order?.orderType == 4) return // 快件订单不绘制
        if (startMarker != null && endMarker != null) {
            LogHelper.logRecord("开始规划路线")
            AMapKit.initRouteLine(
                startMarker!!.position,
                endMarker!!.position,
                object : (MutableList<LatLng>, Float, Long) -> Unit {
                    override fun invoke(p1: MutableList<LatLng>, p2: Float, p3: Long) {
                        if (isFinishing || isDestroyed) {
                            LogHelper.logRecord("订单行程页已经关闭")
                            return
                        }
                        aMap?.also {
                            markerLine?.remove()
                            LogHelper.logRecord("开始绘制规划路线 ${p1.size}")
                            markerLine = AMapKit.drawLine(this@TripActivity, it, p1)
                            AMapKit.moveCamera(it, startMarker!!.position, endMarker!!.position)
                        }
@@ -830,9 +831,15 @@
                            object : TypeToken<List<Point>>() {}.type
                        )
                        if (!list.isNullOrEmpty()) {
                            aMap?.also { it ->
                            oldDrivedRouteOverlay = newDrivedRouteOverlay
                            newDrivedRouteOverlay = drawLine(list.map { LatLng(it.lat, it.lon) })
                                val data = list.map { LatLng(it.lat, it.lon) }.toMutableList()
                                if (driverMarker != null) {
                                    data.add(driverMarker!!.position)
                                }
                                newDrivedRouteOverlay = AMapKit.drawLine(this, it, data, cn.sinata.xldutils.R.color.textColor99)
                            oldDrivedRouteOverlay?.remove()
                            }
                        }
                    } catch (e: Exception) {
                        e.printStackTrace()
@@ -900,18 +907,6 @@
        } else {
            driverMarker?.position = latLng
        }
    }
    /**
     * 绘制已行驶灰色路径
     */
    private fun drawLine(latLngs: List<LatLng>): Polyline? {
        val options = PolylineOptions().addAll(latLngs)
        if (driverMarker != null) {
            options.add(driverMarker!!.position)
        }
        options.width(20f).color(Color.parseColor("#999999"))
        return aMap?.addPolyline(options)
    }
    /**
app/src/main/java/com/igo/user/utils/google/AMapKit.kt
@@ -11,6 +11,7 @@
import android.view.View
import android.widget.Toast
import androidx.core.content.ContextCompat
import cn.sinata.rxnetty.LogHelper
import cn.sinata.xldutils.utils.LanguageUtil
import com.google.android.gms.common.api.ApiException
import com.google.android.gms.common.util.CollectionUtils.listOf
@@ -162,9 +163,13 @@
        return aMap.addPolyline(options)
    }
    fun drawLine(context: Context, aMap: ConsumerGoogleMap, latLngs: List<LatLng?>?): Polyline? {
        val options = PolylineOptions().addAll(latLngs!!).width(20f)
            .color(ContextCompat.getColor(context, R.color.quantum_googgreen500))
    fun drawLine(context: Context, aMap: ConsumerGoogleMap, latLngs: List<LatLng>): Polyline {
        return drawLine(context, aMap, latLngs, R.color.quantum_googgreen500)
    }
    fun drawLine(context: Context, aMap: ConsumerGoogleMap, latLngs: List<LatLng>, colorRes: Int): Polyline {
        val options = PolylineOptions().addAll(latLngs).width(20f)
            .color(ContextCompat.getColor(context, colorRes))
        return aMap.addPolyline(options)
    }
@@ -353,10 +358,10 @@
                "&waypoints=" + centerStr +
                "&region=" + language +
                "&key=" + Const.google_key
        getClient(url) {
            val googleBean = Gson().fromJson<GoogleRouteBean>(it, GoogleRouteBean::class.java)
            if (googleBean.routes.isNullOrEmpty()) {
                LogHelper.logRecord("规划路线为空")
                return@getClient
            }
            val bean = googleBean.routes.first()
@@ -448,18 +453,28 @@
            .url(url)
            .method("GET", null)
            .build()
        LogHelper.logRecord("请求谷歌服务器 $url")
        val subscribe = Observable.just(request)
            .map { request -> client.newCall(request).execute() }
            .map { request -> client.newCall(request).execute().body()?.string() ?: "" }
            .retry(retryCount.toLong())   // 最多额外重试 3 次(加上首次共 4 次尝试)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe({
                try {
                    function(it.body()?.string() ?: "")
                    if (it.isEmpty()) {
                        LogHelper.logRecord("请求谷歌服务器成功 获取结果异常为空")
                        return@subscribe
                    }
                    function(it)
                    LogHelper.logRecord("请求谷歌服务器成功")
                } catch (e: Exception) {
                    e.printStackTrace()
                    LogHelper.logRecord("请求谷歌服务器成功,获取结果异常报错 message:${e.message},stackTrace:${e.stackTraceToString()}")
                }
            }, { throwable -> throwable.printStackTrace() })
            }, { throwable ->
                throwable.printStackTrace()
                LogHelper.logRecord("请求谷歌服务器异常报错 message:${throwable.message},stackTrace:${throwable.stackTraceToString()}")
            })
    }
    /***