Commit 65f2b6b3 authored by 宋永孟's avatar 宋永孟

add 添加选择地址列表

parent 8959983b
package com.yidian.common
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.BaseAdapter
import android.widget.TextView
import com.amap.api.services.core.PoiItem
/**
* Author: sym
* Date: 2021/6/27 3:35 PM
* Describe:
*/
class PoiListAdapter : BaseAdapter() {
private lateinit var data: List<PoiItem>
override fun getCount(): Int {
return if (::data.isInitialized) {
data.size
} else {
0
}
}
override fun getItem(position: Int): Any {
return position
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
val view: View?
var holder: ViewHolder
if (convertView == null) {
holder = ViewHolder()
view = LayoutInflater.from(parent!!.context).inflate(R.layout.list_view_item, null)
holder.titleTextView = view.findViewById(R.id.list_view_title_text)
holder.areaTextView = view.findViewById(R.id.list_view_area_text)
view.tag = holder
} else {
view = convertView
holder = view.tag as ViewHolder
}
//填充数据
holder.titleTextView!!.text = data[position].title
holder.areaTextView!!.text = data[position].provinceName + data[position].cityName + data[position].adName
return view!!
}
internal class ViewHolder {
var titleTextView: TextView? = null
var areaTextView: TextView? = null
}
fun setData(data: List<PoiItem>) {
this.data = data
notifyDataSetChanged()
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/list_view_title_text"
android:layout_width="match_parent"
android:layout_height="25dp"
tools:ignore="MissingConstraints" />
<TextView
android:id="@+id/list_view_area_text"
android:layout_width="match_parent"
android:layout_height="25dp"
tools:ignore="MissingConstraints" />
</LinearLayout>
\ No newline at end of file
......@@ -114,6 +114,7 @@ class FlashActivity : BaseActivity<ActivityFlashBinding>(), IGetLifeAccountListC
.subscribe {
if (it) {
launcher()
// startActivity(Intent(this@FlashActivity, SelectAddressActivity::class.java))
} else {
ToastUtil.showToast(this, "请在设置里同意读取存储卡权限")
......
......@@ -16,6 +16,7 @@ import com.amap.api.services.core.SuggestionCity
import com.amap.api.services.poisearch.PoiResult
import com.amap.api.services.poisearch.PoiSearch
import com.amap.api.services.poisearch.PoiSearch.OnPoiSearchListener
import com.yidian.common.PoiListAdapter
import com.yidian.common.base.BaseActivity
import com.yidian.shenghuoquan.newscontent.R
import com.yidian.shenghuoquan.newscontent.databinding.ActivitySelectAddressBinding
......@@ -29,6 +30,7 @@ import kotlinx.android.synthetic.main.activity_select_address.*
*/
class SelectAddressActivity : BaseActivity<ActivitySelectAddressBinding>(), OnMyLocationChangeListener, AMap.OnMapClickListener, OnPoiSearchListener {
private lateinit var mapView: MapView
private var adapter = PoiListAdapter()
private var myLocationStyle: MyLocationStyle? = null
var bitmapDescriptor: BitmapDescriptor? = null
private var markerView: View? = null
......@@ -48,6 +50,7 @@ class SelectAddressActivity : BaseActivity<ActivitySelectAddressBinding>(), OnMy
override fun init(savedInstanceState: Bundle?) {
super.init(savedInstanceState)
mapView = viewBind.map
viewBind.poiList.adapter = adapter
mapView.onCreate(savedInstanceState)
bitmapDescriptor = BitmapDescriptorFactory.fromView(markerView)
markerView = layoutInflater.inflate(R.layout.layout_service_addr_map_marker, null)
......@@ -99,11 +102,12 @@ class SelectAddressActivity : BaseActivity<ActivitySelectAddressBinding>(), OnMy
// 如果要设置定位的默认状态,可以在此处进行设置
myLocationStyle = MyLocationStyle()
aMap!!.myLocationStyle = myLocationStyle
aMap!!.uiSettings.isMyLocationButtonEnabled = true // 设置默认定位按钮是否显示
aMap!!.uiSettings.isMyLocationButtonEnabled = false // 设置默认定位按钮是否显示
aMap!!.isMyLocationEnabled = true // 设置为true表示显示定位层并可触发定位,false表示隐藏定位层并不可触发定位,默认是false
aMap!!.setOnMapClickListener(this) // 设置点击marker事件监听器
}
//定位
override fun onMyLocationChange(location: Location?) {
// 定位回调监听
if (location != null) {
......@@ -128,10 +132,12 @@ class SelectAddressActivity : BaseActivity<ActivitySelectAddressBinding>(), OnMy
}
}
//点击
override fun onMapClick(latLng: LatLng?) {
updataCurrentMarker(latLng)
}
//更新当前坐标
private fun updataCurrentMarker(latLng: LatLng?) {
val markerOption = MarkerOptions()
markerOption.position(latLng)
......@@ -144,7 +150,7 @@ class SelectAddressActivity : BaseActivity<ActivitySelectAddressBinding>(), OnMy
queryPoi()
}
//poi搜索
private fun queryPoi() {
val latLng = currentMarker!!.getObject() as LatLng
val typeRange = "汽车服务|汽车销售|" +
......@@ -180,6 +186,7 @@ class SelectAddressActivity : BaseActivity<ActivitySelectAddressBinding>(), OnMy
.getSearchSuggestionCitys() // 当搜索不到poiitem数据时,会返回含有搜索关键字的城市信息
if (poiItems != null && poiItems.size > 0) {
adapter.setData(poiItems)
}
}
}
......
......@@ -47,11 +47,15 @@
</LinearLayout>
<com.amap.api.maps.MapView
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
android:layout_height="match_parent"/>
<ListView
android:id="@+id/poi_list"
android:layout_width="match_parent"
android:background="#fff"
android:layout_height="250dp" />
</LinearLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment