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