From 0361f47762f9958f2ec91fdb62bfc98de4e162a6 Mon Sep 17 00:00:00 2001
From: lmw <125975490@qq.com>
Date: 星期一, 14 四月 2025 15:16:17 +0800
Subject: [PATCH] save

---
 app/src/main/java/com/xianning/driver/base/gaode/AMapKit.kt |  185 +++++++++++----------------------------------
 1 files changed, 47 insertions(+), 138 deletions(-)

diff --git a/app/src/main/java/com/xianning/driver/base/gaode/AMapKit.kt b/app/src/main/java/com/xianning/driver/base/gaode/AMapKit.kt
index 23c0a5c..b2827a6 100644
--- a/app/src/main/java/com/xianning/driver/base/gaode/AMapKit.kt
+++ b/app/src/main/java/com/xianning/driver/base/gaode/AMapKit.kt
@@ -1,28 +1,19 @@
 package com.xianning.driver.base.gaode
 
 import android.content.Context
-import android.graphics.Color
 import android.location.LocationManager
 import android.os.Bundle
 import android.os.Handler
 import android.os.Looper
-import android.text.TextUtils
 import android.view.View
 import androidx.core.content.ContextCompat
-import cn.sinata.xldutils.utils.sysErr
-import com.amap.api.fence.GeoFenceClient
-import com.amap.api.fence.GeoFenceListener
-import com.amap.api.services.core.LatLonPoint
-import com.amap.api.services.geocoder.*
-import com.amap.api.services.route.*
-import com.amap.api.services.route.RouteSearch.DriveRouteQuery
-import com.amap.api.services.route.RouteSearch.FromAndTo
 import com.baidu.location.BDAbstractLocationListener
 import com.baidu.location.LocationClient
 import com.baidu.location.LocationClientOption
 import com.baidu.location.LocationClientOption.LocationMode
 import com.baidu.mapapi.map.*
 import com.baidu.mapapi.model.LatLng
+import com.baidu.mapapi.model.LatLngBounds
 import com.xianning.driver.R
 import java.util.*
 
@@ -50,30 +41,36 @@
         //设置是否在stop的时候杀死这个进程,默认(建议)不杀死,即setIgnoreKillProcess(true)
         option.SetIgnoreCacheException(false);
         option.setIsNeedAddress(true)
+        //可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll;
+        option.setCoorType("bd09ll")
         //可选,设置是否收集Crash信息,默认收集,即参数为false
         mLocationClient?.setLocOption(option)
         mLocationClient?.registerLocationListener(lisener)
         mLocationClient?.start()
-
         return mLocationClient
     }
 
     fun initMap(savedInstanceState: Bundle?, mapView: MapView): BaiduMap {
         val aMap = mapView.map
-        val mMyLocationStyle = BaiduMapOptions()
+        val uiSettings = aMap.uiSettings
+        uiSettings.isCompassEnabled = false
+        mapView.showScaleControl(false)
+        mapView.showZoomControls(false)
         return aMap
     }
 
-    fun drawLine(context: Context, aMap: BaiduMap, start: LatLng, end: LatLng): Polyline? {
-//        val latLngs: MutableList<LatLng> = ArrayList()
-//        latLngs.add(start)
-//        latLngs.add(end)
-//        return aMap.addPolyline(
-//            PolylineOptions().addAll(latLngs).width(10f).color(
-//                ContextCompat.getColor(context, R.color.main_yellow_qia)
-//            )
-//        )
-        return null
+    fun drawLine(context: Context, aMap: BaiduMap, start: LatLng, end: LatLng): Overlay? {
+        val latLngs: MutableList<LatLng> = ArrayList()
+        latLngs.add(start)
+        latLngs.add(end)
+        //设置折线的属性
+        val mOverlayOptions: OverlayOptions = PolylineOptions()
+            .width(10)
+            .color(ContextCompat.getColor(context, R.color.main_yellow_qia))
+            .points(latLngs)
+        //在地图上绘制折线
+        //mPloyline 折线对象
+        return aMap.addOverlay(mOverlayOptions)
     }
 
 
@@ -83,61 +80,43 @@
     }
 
 
-    fun drawLine(context: Context, aMap: BaiduMap, latLngs: List<LatLng?>?): Polyline? {
-//        val options = PolylineOptions().addAll(latLngs).width(20f)
-//            .color(ContextCompat.getColor(context, R.color.qing))
-//        return aMap.addPolyline(options)
+    fun drawLine(context: Context, aMap: BaiduMap, points: List<LatLng>?): Overlay? {
+        val latLngs: MutableList<LatLng> = ArrayList()
+        latLngs.addAll(points?: arrayListOf())
+        //设置折线的属性
+        val mOverlayOptions: OverlayOptions = PolylineOptions()
+            .width(10)
+            .color(ContextCompat.getColor(context, R.color.qing))
+            .points(latLngs)
+        //在地图上绘制折线
+        //mPloyline 折线对象
+        if (aMap!=null)
+            return aMap.addOverlay(mOverlayOptions)
         return null
     }
 
-    fun moveCamera(aMap: BaiduMap, latlng: LatLng?) {
-//        val mCameraUpdate = CameraUpdateFactory.newCameraPosition(
-//            CameraPosition(latlng, 16f, 0f, 0f)
-//        )
-//        aMap.animateCamera(mCameraUpdate)
+    fun moveCamera(aMap: BaiduMap, latlng: LatLng) {
+        val mapStatusUpdate = MapStatusUpdateFactory.newLatLng(latlng)
+        aMap.animateMapStatus(mapStatusUpdate,8)
     }
 
     fun moveCamera(aMap: BaiduMap, start: LatLng?, end: LatLng?) {
-//        var bounds: LatLngBounds? = null
-//        if (start!!.latitude < end!!.latitude)
-//            bounds = LatLngBounds(start, end)
-//        else
-//            bounds = LatLngBounds(end, start)
-//        val mCameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds, 150)
-//        aMap.animateCamera(mCameraUpdate, object : AMap.CancelableCallback {
-//            override fun onFinish() {
-//                sysErr("onFinish")
-//            }
-//
-//            override fun onCancel() {
-//                sysErr("onCancel")
-//            }
-//        })
+        val bounds = LatLngBounds.Builder().include(start).include(end).build()
+        val mapStatusUpdate = MapStatusUpdateFactory.newLatLngBounds(bounds,100,100,100,100)
+        aMap.animateMapStatus(mapStatusUpdate)
     }
 
     fun moveCamera3(aMap: BaiduMap, start: LatLng?, end: LatLng?, car: LatLng?) {
-//        var bounds: LatLngBounds? = null
-//        if (start!!.latitude < end!!.latitude)
-//            bounds = LatLngBounds(start, end)
-//        else
-//            bounds = LatLngBounds(end, start)
-//        bounds.including(car)
-//        val mCameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds, 150)
-//        aMap.animateCamera(mCameraUpdate, object : AMap.CancelableCallback {
-//            override fun onFinish() {
-//                sysErr("onFinish")
-//            }
-//
-//            override fun onCancel() {
-//                sysErr("onCancel")
-//            }
-//        })
+        val bounds = LatLngBounds.Builder().include(start).include(end).include(car).build()
+        val mapStatusUpdate = MapStatusUpdateFactory.newLatLngBounds(bounds,150,150,150,150)
+        aMap.animateMapStatus(mapStatusUpdate)
+
     }
 
-    fun moveCamera(aMap: BaiduMap, start: LatLng?, end: LatLng?, padd: Int) {
-//        val bounds = LatLngBounds(start, end)
-//        val mCameraUpdate = CameraUpdateFactory.newLatLngBounds(bounds, padd)
-//        aMap.animateCamera(mCameraUpdate)
+    fun moveCamera(aMap: BaiduMap, start: LatLng, end: LatLng, padd: Int) {
+        val bounds = LatLngBounds.Builder().include(start).include(end).build()
+        val mapStatusUpdate = MapStatusUpdateFactory.newLatLngBounds(bounds,padd,padd,padd,padd)
+        aMap.animateMapStatus(mapStatusUpdate)
     }
 
     fun getOption(
@@ -166,13 +145,13 @@
         mLng: Double?,
         view: View,
         peopleId: String
-    ): Marker? {
+    ): Overlay? {
         if (mLat == null || mLng == null){
             return null
         }
         val options: MarkerOptions = getOption(LatLng(mLat, mLng), view)
         val marker: Overlay = aMap.addOverlay(options)
-        return null
+        return marker
     }
 
     fun getTance(tance: Float): String {
@@ -199,76 +178,6 @@
             return (num / 3600).toString() + ":" + ((num % 3600) / 60).toString() + ":" + (((num % 3600) % 60) % 60).toString() + "s"
         }
         return ""
-    }
-
-    fun initRouteLine(
-        context: Context,
-        start: LatLng, end: LatLng,
-        onClick: (latLngs: MutableList<LatLng>, lineTance: Float, lineTime: Long) -> Unit
-    ) {
-        initRouteLine(context, start, end, null, onClick)
-    }
-
-    fun initRouteLine(
-        context: Context,
-        start: LatLng, end: LatLng, centerPoint: List<LatLonPoint>?,
-        onClick: (latLngs: MutableList<LatLng>, lineTance: Float, lineTime: Long) -> Unit
-    ) {
-        var routeSearch = RouteSearch(context)
-        val fromAndTo = FromAndTo(
-            LatLonPoint(start.latitude, start.longitude),
-            LatLonPoint(end.latitude, end.longitude)
-        )
-        val query =
-            DriveRouteQuery(
-                fromAndTo,
-                RouteSearch.DRIVING_SINGLE_SAVE_MONEY,
-                centerPoint,
-                null,
-                ""
-            )
-        routeSearch.calculateDriveRouteAsyn(query)
-        routeSearch.setRouteSearchListener(object : RouteSearch.OnRouteSearchListener {
-            override fun onDriveRouteSearched(p0: DriveRouteResult?, p1: Int) {
-                if (p1 == 1000) { //获取规划路线成功,获取到的是了,路线坐标点的集合
-                    val paths: List<DrivePath> = p0!!.paths
-                    var allDistance = 0f
-                    if (paths.isNotEmpty()) {
-                        val drivePath = paths[0]
-                        //创建存储坐标点的集合
-                        val latLngs: MutableList<LatLng> =
-                            ArrayList()
-                        //遍历获取规划的所有路线坐标点
-                        for (mDriveStep in drivePath.steps) {
-                            allDistance += mDriveStep.distance
-                            for (mLatLonPoint in mDriveStep.polyline) {
-                                latLngs.add(
-                                    LatLng(
-                                        mLatLonPoint.latitude,
-                                        mLatLonPoint.longitude
-                                    )
-                                )
-                            }
-                        }
-                        val lineTance = allDistance
-                        val lineTime = (drivePath.duration / 60) //lineTime 分钟
-                        Handler(Looper.getMainLooper()).post {
-                            onClick(latLngs, lineTance, lineTime)
-                        }
-                    }
-                }
-            }
-
-            override fun onBusRouteSearched(p0: BusRouteResult?, p1: Int) {
-            }
-
-            override fun onRideRouteSearched(p0: RideRouteResult?, p1: Int) {
-            }
-
-            override fun onWalkRouteSearched(p0: WalkRouteResult?, p1: Int) {
-            }
-
-        })
     }
 
     /***

--
Gitblit v1.7.1