| app/src/main/java/com/igo/user/ui/trip/TripActivity.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| app/src/main/java/com/igo/user/utils/google/AMapKit.kt | ●●●●● 补丁 | 查看 | 原始文档 | 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()) { oldDrivedRouteOverlay = newDrivedRouteOverlay newDrivedRouteOverlay = drawLine(list.map { LatLng(it.lat, it.lon) }) oldDrivedRouteOverlay?.remove() aMap?.also { it -> oldDrivedRouteOverlay = newDrivedRouteOverlay 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 + "®ion=" + 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()}") }) } /***