From a052061e479b4b2db89e66df01ef2a9a9eea3cf4 Mon Sep 17 00:00:00 2001
From: 18034727885 <973609879@qq.com>
Date: 星期一, 06 七月 2026 11:01:19 +0800
Subject: [PATCH] 修复问题

---
 app/src/main/java/com/fangxinxing/xxfxx/ui/main/SetDestinationActivity.kt |   42 ++++++++++----------
 app/src/main/java/com/fangxinxing/xxfxx/ui/main/TripActivity.kt           |   12 +++---
 app/src/main/java/com/fangxinxing/xxfxx/base/gaode/AMapKit.kt             |   30 ++++++++++-----
 app/src/main/java/com/fangxinxing/xxfxx/ui/DialogUtil.kt                  |    6 +-
 app/src/main/java/com/fangxinxing/xxfxx/bean/DestinationInfo.kt           |   19 +++++++++
 5 files changed, 69 insertions(+), 40 deletions(-)

diff --git a/app/src/main/java/com/fangxinxing/xxfxx/base/gaode/AMapKit.kt b/app/src/main/java/com/fangxinxing/xxfxx/base/gaode/AMapKit.kt
index b9fe55d..1d49621 100644
--- a/app/src/main/java/com/fangxinxing/xxfxx/base/gaode/AMapKit.kt
+++ b/app/src/main/java/com/fangxinxing/xxfxx/base/gaode/AMapKit.kt
@@ -29,6 +29,7 @@
 import com.amap.api.navi.model.AMapCalcRouteResult
 import com.amap.api.navi.model.AMapNaviPath
 import com.amap.api.navi.model.NaviPoi
+import com.amap.api.services.core.AMapException
 import com.amap.api.services.core.LatLonPoint
 import com.amap.api.services.district.DistrictSearch
 import com.amap.api.services.district.DistrictSearchQuery
@@ -493,7 +494,7 @@
     }
 
     /***
-     * 周边检索地址
+     * 逆地理编码(坐标转地址)
      * @param lat
      * @param lng
      */
@@ -501,16 +502,25 @@
         context: Context,
         lat: Double,
         lng: Double,
-        var1: PoiSearch.OnPoiSearchListener
+        block: (lat: Double, lng: Double, regeocodeAddress: RegeocodeAddress) -> Unit
     ) {
-        val query = PoiSearch.Query("", "", "")
-//        val query = PoiSearch.Query("", ctgr, "")
-//        query.pageSize = 10 // 设置每页最多返回多少条poiitem
-//        query.pageNum = 1 //设置查询页码
-        val poiSearch = PoiSearch(context, query)
-        poiSearch.setOnPoiSearchListener(var1)
-        poiSearch.bound = PoiSearch.SearchBound(LatLonPoint(lat, lng), 5000) //设置周边搜索的中心点以及半径
-        poiSearch.searchPOIAsyn()
+        val geocodeSearch = GeocodeSearch(context)
+        geocodeSearch.setOnGeocodeSearchListener(object : GeocodeSearch.OnGeocodeSearchListener {
+            override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) {
+                if (rCode == AMapException.CODE_AMAP_SUCCESS) {
+                    if (result?.regeocodeAddress?.formatAddress != null) {
+                        block.invoke(lat, lng, result.regeocodeAddress)
+                    }
+                }
+            }
+
+            override fun onGeocodeSearched(p0: GeocodeResult?, p1: Int) {
+
+            }
+        })
+        // 第一个参数表示一个Latlng,第二参数表示范围多少米,第三个参数表示是火系坐标系还是GPS原生坐标系
+        val query = RegeocodeQuery(LatLonPoint(lat, lng), 50f, GeocodeSearch.AMAP)
+        geocodeSearch.getFromLocationAsyn(query);
     }
 
     /***
diff --git a/app/src/main/java/com/fangxinxing/xxfxx/bean/DestinationInfo.kt b/app/src/main/java/com/fangxinxing/xxfxx/bean/DestinationInfo.kt
new file mode 100644
index 0000000..319d278
--- /dev/null
+++ b/app/src/main/java/com/fangxinxing/xxfxx/bean/DestinationInfo.kt
@@ -0,0 +1,19 @@
+package com.fangxinxing.xxfxx.bean
+
+import android.os.Parcelable
+import kotlinx.android.parcel.Parcelize
+
+//目的地信息
+@Parcelize
+data class DestinationInfo(
+    var lat: Double,
+    var lng: Double,
+    var province: String,
+    var city: String,
+    var cityCode: String,
+    var district: String,
+    var address: String,
+    var adCode: String,
+) : Parcelable {
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/fangxinxing/xxfxx/ui/DialogUtil.kt b/app/src/main/java/com/fangxinxing/xxfxx/ui/DialogUtil.kt
index 22d1190..029ad8e 100644
--- a/app/src/main/java/com/fangxinxing/xxfxx/ui/DialogUtil.kt
+++ b/app/src/main/java/com/fangxinxing/xxfxx/ui/DialogUtil.kt
@@ -12,9 +12,9 @@
 import androidx.core.content.ContextCompat
 import androidx.recyclerview.widget.LinearLayoutManager
 import cn.sinata.xldutils.utils.DensityUtil
-import com.amap.api.services.core.PoiItem
 import com.fangxinxing.xxfxx.R
 import com.fangxinxing.xxfxx.bean.AllCarBean
+import com.fangxinxing.xxfxx.bean.DestinationInfo
 import com.fangxinxing.xxfxx.ui.adapter.ColorOnlyAdapter
 import com.fangxinxing.xxfxx.ui.adapter.ServerModeAdapter
 import com.fangxinxing.xxfxx.ui.adapter.ServerOnlyAdapter
@@ -548,12 +548,12 @@
     //获取设置乘客目的地弹窗
     fun getSetPassengerDestinationDialog(
         context: Context,
-        item: PoiItem,
+        item: DestinationInfo,
         clickSure: () -> Unit
     ): Dialog {
         val dialog = getDialog(context, R.layout.dialog_set_passenger_destination)
         val view = getView(dialog)
-        view.tv_address.text = item.provinceName + item.cityName + item.adName + item.title
+        view.tv_address.text = item.address
         view.iv_dialog_close.setOnClickListener { dialog.dismiss() }
         view.tv_dialog_cancel.setOnClickListener { dialog.dismiss() }
         view.tv_dialog_confirm.setOnClickListener {
diff --git a/app/src/main/java/com/fangxinxing/xxfxx/ui/main/SetDestinationActivity.kt b/app/src/main/java/com/fangxinxing/xxfxx/ui/main/SetDestinationActivity.kt
index af9aafe..98c4b23 100644
--- a/app/src/main/java/com/fangxinxing/xxfxx/ui/main/SetDestinationActivity.kt
+++ b/app/src/main/java/com/fangxinxing/xxfxx/ui/main/SetDestinationActivity.kt
@@ -20,6 +20,7 @@
 import com.fangxinxing.xxfxx.base.MyBaseActivity
 import com.fangxinxing.xxfxx.base.gaode.AMapKit
 import com.fangxinxing.xxfxx.bean.AddressInfo
+import com.fangxinxing.xxfxx.bean.DestinationInfo
 import com.fangxinxing.xxfxx.utils.clickDelay
 import kotlinx.android.synthetic.main.activity_set_destination.iv_reset_map
 import kotlinx.android.synthetic.main.activity_set_destination.map_view
@@ -53,7 +54,6 @@
         intent.getStringExtra("title")
     }
     var marker: Marker? = null
-
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         map_view.onCreate(savedInstanceState)
@@ -151,28 +151,28 @@
         AMapKit.searchAddress(
             this,
             position.latitude,
-            position.longitude,
-            object : PoiSearch.OnPoiSearchListener {
-                override fun onPoiItemSearched(p0: PoiItem?, p1: Int) {
-
-                }
-
-                override fun onPoiSearched(p0: PoiResult?, p1: Int) {
-                    if (isDestroy || isFinishing) {
-                        return
-                    }
-                    if (p0?.pois!!.size > 0) {
-                        setData(p0.pois.first())
-                    }
-                }
-            })
+            position.longitude
+        ) { lat, lng, regeocodeAddress ->
+            setData(
+                DestinationInfo(
+                    lat,
+                    lng,
+                    regeocodeAddress.province,
+                    regeocodeAddress.city,
+                    regeocodeAddress.cityCode,
+                    regeocodeAddress.district,
+                    regeocodeAddress.formatAddress,
+                    regeocodeAddress.adCode,
+                )
+            )
+        }
     }
 
     //设置数据
-    private fun setData(item: PoiItem) {
-        tv_site.text = item.adName
-        tv_site_detail.text = item.title
-        tv_city_name.text = item.cityName
+    private fun setData(item: DestinationInfo) {
+        tv_site.text = item.district
+        tv_site_detail.text = item.address
+        tv_city_name.text = item.city
         marker?.`object` = item
     }
 
@@ -214,7 +214,7 @@
             startActivity<SearchAddressActivity>("cityName" to tv_city_name.text.toString())
         }
         tv_sure.clickDelay {
-            (marker?.`object` as? PoiItem)?.also {
+            (marker?.`object` as? DestinationInfo)?.also {
                 EventBus.getDefault().post(BaseEvent(BaseEvent.SELECT_ADDRESS, gson.toJson(it)))
             }
             finish()
diff --git a/app/src/main/java/com/fangxinxing/xxfxx/ui/main/TripActivity.kt b/app/src/main/java/com/fangxinxing/xxfxx/ui/main/TripActivity.kt
index d7c095a..b52ca9c 100644
--- a/app/src/main/java/com/fangxinxing/xxfxx/ui/main/TripActivity.kt
+++ b/app/src/main/java/com/fangxinxing/xxfxx/ui/main/TripActivity.kt
@@ -15,7 +15,6 @@
 import com.amap.api.maps.model.Marker
 import com.amap.api.maps.model.MarkerOptions
 import com.amap.api.maps.model.Polyline
-import com.amap.api.services.core.PoiItem
 import com.fangxinxing.xxfxx.R
 import com.fangxinxing.xxfxx.base.BaseEvent
 import com.fangxinxing.xxfxx.base.MyApplication
@@ -26,6 +25,7 @@
 import com.fangxinxing.xxfxx.base.gaode.AMapKit.getTimeType
 import com.fangxinxing.xxfxx.base.gaode.AMapKit.initMap
 import com.fangxinxing.xxfxx.base.gaode.AMapKit.moveCamera
+import com.fangxinxing.xxfxx.bean.DestinationInfo
 import com.fangxinxing.xxfxx.bean.OrderBean
 import com.fangxinxing.xxfxx.bean.OrderSimpleData
 import com.fangxinxing.xxfxx.bean.PassengersLocationInfo
@@ -767,13 +767,13 @@
     }
 
     //显示设置乘客目的地弹窗
-    private fun showSetPassengerDestinationDialog(item: PoiItem) {
+    private fun showSetPassengerDestinationDialog(item: DestinationInfo) {
         DialogUtil.getSetPassengerDestinationDialog(this, item) {
             val map = getMapByAny()
             map["orderId"] = orderId
-            map["endLat"] = item.latLonPoint.latitude
-            map["endLon"] = item.latLonPoint.longitude
-            map["endAddress"] = item.provinceName + item.cityName + item.adName + item.title
+            map["endLat"] = item.lat
+            map["endLon"] = item.lng
+            map["endAddress"] = item.address
             callNet(Api.setDestination, map) {
                 callOrder()
             }
@@ -815,7 +815,7 @@
             }
 
             BaseEvent.SELECT_ADDRESS -> {
-                val info = gson.fromJson(event.msg, PoiItem::class.java)
+                val info = gson.fromJson(event.msg, DestinationInfo::class.java)
                 showSetPassengerDestinationDialog(info)
             }
         }

--
Gitblit v1.7.1