package com.zhaoyang.driver.ui.main
|
|
import android.os.Bundle
|
import android.os.Handler
|
import android.os.Looper
|
import android.util.Log
|
import android.view.View
|
import cn.sinata.xldutils.utils.*
|
import com.amap.api.location.AMapLocationListener
|
import com.amap.api.maps.AMap
|
import com.amap.api.maps.model.LatLng
|
import com.amap.api.maps.model.Marker
|
import com.amap.api.maps.model.Poi
|
import com.amap.api.maps.model.Polyline
|
import com.amap.api.navi.AmapNaviPage
|
import com.amap.api.navi.AmapNaviParams
|
import com.amap.api.navi.AmapNaviType
|
import com.amap.api.navi.AmapPageType
|
import com.amap.api.track.AMapTrackClient
|
import com.amap.api.track.ErrorCode
|
import com.amap.api.track.OnTrackLifecycleListener
|
import com.amap.api.track.TrackParam
|
import com.amap.api.track.query.entity.DriveMode
|
import com.amap.api.track.query.model.*
|
import com.zhaoyang.driver.R
|
import com.zhaoyang.driver.base.BaseEvent
|
import com.zhaoyang.driver.base.MyApplication
|
import com.zhaoyang.driver.base.MyBaseActivity
|
import com.zhaoyang.driver.base.gaode.AMapKit
|
import com.zhaoyang.driver.base.gaode.AMapKit.addMarker
|
import com.zhaoyang.driver.base.gaode.AMapKit.getIcon
|
import com.zhaoyang.driver.base.gaode.AMapKit.getTimeType
|
import com.zhaoyang.driver.base.gaode.AMapKit.initMap
|
import com.zhaoyang.driver.base.gaode.AMapKit.moveCamera
|
import com.zhaoyang.driver.bean.OrderBean
|
import com.zhaoyang.driver.bean.OrderSimpleData
|
import com.zhaoyang.driver.bean.RessignBean
|
import com.zhaoyang.driver.netUtls.Api
|
import com.zhaoyang.driver.netUtls.callNet
|
import com.zhaoyang.driver.netUtls.createView
|
import com.zhaoyang.driver.netUtls.getMapByAny
|
import com.zhaoyang.driver.ui.DialogUtil
|
import com.zhaoyang.driver.ui.main.major.MajorSureMoneyActivity
|
import com.zhaoyang.driver.utils.DateUtil
|
import com.zhaoyang.driver.utils.MyUtils
|
import com.google.gson.Gson
|
import com.trello.rxlifecycle3.android.ActivityEvent
|
import com.zhaoyang.driver.utils.Cache.CacheKey
|
import io.reactivex.Observable
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.disposables.Disposable
|
import io.reactivex.schedulers.Schedulers
|
import kotlinx.android.synthetic.main.activity_trip.*
|
import kotlinx.android.synthetic.main.dialog_input_num.view.*
|
import kotlinx.android.synthetic.main.dialog_select_pay_type.view.*
|
import kotlinx.android.synthetic.main.include_order_top.*
|
import kotlinx.android.synthetic.main.item_map_market.view.*
|
import kotlinx.android.synthetic.main.item_map_market.view.tv_hint
|
import org.greenrobot.eventbus.EventBus
|
import org.jetbrains.anko.startActivity
|
import org.jetbrains.anko.toast
|
import java.util.concurrent.TimeUnit
|
|
|
class TripActivity : MyBaseActivity(), OnTrackListener, OnTrackLifecycleListener {
|
|
/***
|
* // 流程操作状态(3=开始出发预约点,4=到达预约点,5=开始服务,6=服务结束)
|
* 页面一共4个marker 1:预约地点 2:起点 3终点 4:司机点
|
*/
|
val orderType by lazy {
|
intent.getStringExtra("orderType")
|
}
|
|
val orderId by lazy {
|
intent.getStringExtra("orderId")
|
}
|
var isTimeStart = false //限制计时器
|
|
var makeMarker: Marker? = null
|
var startMarker: Marker? = null
|
var endMarker: Marker? = null
|
var carMarker: Marker? = null
|
var markerLine: Polyline? = null
|
lateinit var aMap: AMap
|
lateinit var orderBean: OrderBean
|
var graylist = arrayListOf<LatLng>() // 灰色轨迹
|
var grayline:Polyline? = null
|
|
private lateinit var aMapTrackClient: AMapTrackClient
|
private val terminalName by lazy {//终端名
|
"Driver-${CacheKey.getUserId()}" // 唯一标识某个用户或某台设备的名称
|
}
|
private val serviceIdS by lazy {//服务号
|
val sid = CacheKey.getServerId()
|
if (sid.isNullOrEmpty()) 0L else sid.toLong()
|
}
|
private var terminalId = 0L//终端id
|
|
private val TAG_TRACK = "猎鹰Log"
|
|
override fun setContentView() {
|
setContentView(R.layout.activity_trip)
|
}
|
|
override fun initView() {
|
setTitleText("")
|
tv_Right.text = "申请改派"
|
callOrder()
|
initMineLocation()
|
onclick()
|
addSockectCancel()
|
initTrack()
|
}
|
|
/**
|
* 初始化猎鹰
|
*/
|
private fun initTrack() {
|
if (serviceIdS == 0L)
|
return
|
aMapTrackClient = AMapTrackClient(applicationContext)
|
aMapTrackClient.queryTerminal(
|
QueryTerminalRequest(serviceIdS, terminalName),
|
this
|
) //查询终端是否已注册
|
}
|
|
private fun addSockectCancel() {
|
checkOrderStatue()
|
MyApplication.addOrderView(object : MyApplication.OrderStatueView {
|
override fun orderInfo(data: OrderSimpleData?) {
|
data?.let {
|
if (it.status == 10 || it.status == 12) {
|
Handler(Looper.getMainLooper()).post {
|
toast("用户已取消订单")
|
MyApplication.getTTsManager().setVideoText("用户已取消订单")
|
MyApplication.currentOrderType = ""
|
MyApplication.currentOrderId = ""
|
finish()
|
}
|
}
|
if (it.status == 15){
|
Handler(Looper.getMainLooper()).post {
|
MyApplication.getTTsManager().setVideoText("用户已修改终点位置,请注意查看")
|
endMarker?.remove()
|
endMarker = null
|
callOrder()
|
}
|
}
|
}
|
}
|
})
|
}
|
|
var handler: Handler? = null
|
fun checkOrderStatue() {
|
var map = getMapByAny()
|
map["orderId"] = orderId
|
map["orderType"] = orderType
|
callNet(false, Api.orderStateSocket, map) {
|
val orderSimpleData =
|
Gson().fromJson(
|
it,
|
OrderSimpleData::class.java
|
)
|
orderSimpleData?.let {
|
if (it.status == 10 || it.status == 12) {
|
Handler(Looper.getMainLooper()).post {
|
toast("用户已取消订单")
|
MyApplication.getTTsManager().setVideoText("用户已取消订单")
|
MyApplication.currentOrderType = ""
|
MyApplication.currentOrderId = ""
|
finish()
|
}
|
}
|
}
|
|
}
|
handler?.postDelayed({ checkOrderStatue() }, 3000)
|
}
|
|
|
override fun onBackPressed() {
|
EventBus.getDefault().post(BaseEvent(BaseEvent.UPDATA_MAIN_CAR))
|
super.onBackPressed()
|
}
|
|
override fun finish() {
|
EventBus.getDefault().post(BaseEvent(BaseEvent.UPDATA_MAIN_CAR))
|
super.finish()
|
}
|
|
private fun onclick() {
|
tv_Right.clickDelay {
|
var map = getMapByAny()
|
map["orderId"] = orderId
|
map["orderType"] = orderType
|
callNet(Api.queryReassignMoney, map) {
|
val data = gson.fromJson<RessignBean>(it, RessignBean::class.java)
|
if (data.data.amount.isNullOrEmpty()) {
|
startActivity<ReassignActivity>(
|
"orderId" to orderId,
|
"orderType" to orderType
|
)
|
} else {
|
DialogUtil.getDelAndSureDialog(
|
this,
|
"现在改派将收取" + data.data.amount + "元改派费,您是否要进行改派?",
|
{},
|
{
|
//跳转改派页面
|
startActivity<ReassignActivity>(
|
"orderId" to orderId,
|
"orderType" to orderType,
|
"money" to data.data.amount.toString()
|
)
|
})
|
}
|
|
|
}
|
}
|
iv_move.setOnClickListener {
|
orderBean.let {
|
when (it.data.orderState) {
|
2, 3 -> {
|
moveCamera(aMap, makeMarker!!.position, carMarker!!.position)
|
}
|
4 -> {
|
moveCamera(aMap, carMarker!!.position)
|
}
|
5, 6 -> {
|
moveCamera(aMap, carMarker!!.position, endMarker!!.position)
|
}
|
}
|
}
|
}
|
|
iv_police.clickDelay {
|
orderBean.let {
|
MyUtils.getInstans().CallPhone(this, it.data.emergencyCall)
|
}
|
}
|
iv_to_gd.clickDelay {
|
orderBean.let {
|
when (it.data.orderState) {
|
2, 3 -> {
|
startNavi(carMarker!!.position.latitude,carMarker!!.position.longitude,makeMarker!!.position.latitude,makeMarker!!.position.longitude)
|
}
|
|
4 -> {
|
showToast("没有终点,无法导航")
|
}
|
|
5, 6 -> {
|
startNavi(carMarker!!.position.latitude,carMarker!!.position.longitude,endMarker!!.position.latitude,endMarker!!.position.longitude)
|
}
|
}
|
}
|
}
|
|
slide_btn.onSwipeListener = {
|
orderBean.let {
|
when (it.data.orderState) {
|
2, 3, 4 -> {
|
var timeByLo = (DateUtil.dateToStamp(
|
DateUtil.TYPE0,
|
it.data.travelTime
|
) - System.currentTimeMillis()) / 1000L
|
if (it.data.orderState == 2 && it.data.reservation == 2 && timeByLo > 1800L) {//判断预约单时间滑动是否有效
|
toast("只能在预约时间的半小时内出行")
|
return@let
|
}
|
if (it.data.orderState == 4) {
|
showNumDialog { num ->
|
it.data.orderState++
|
callStatue(num, it.data.orderState,{
|
MyApplication.getTTsManager().setVideoText("乘客您好,为了您的安全,上车请系好安全带,谢谢配合!")
|
showStatueMapUI(it)
|
aMapTrackClient.addTrack(AddTrackRequest(serviceIdS, terminalId), this)//创建轨迹id
|
}) {
|
it.data.orderState--
|
}
|
}
|
} else {
|
it.data.orderState++
|
callStatue(it.data.orderState) {}
|
showStatueMapUI(it)
|
}
|
|
}
|
5, 6 -> {
|
it.data.orderState = 6
|
when (orderType) {
|
"2" -> {
|
showMoneyTypeDialog()
|
}
|
"1" -> {
|
callStatue(6) {
|
MyApplication.getTTsManager().setVideoText("乘客您好,您已安全到达目的地,开车门请注意避让行人和车辆,请注意周边环境安全!")
|
startActivity<MajorSureMoneyActivity>(
|
"orderId" to orderId,
|
"orderType" to orderType
|
)
|
finish()
|
aMapTrackClient.stopGather(this) //停止轨迹采集
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
|
iv_phone.clickDelay {
|
orderBean.let {
|
MyUtils.getInstans().CallPhone(this, it.data.phone)
|
}
|
}
|
}
|
|
fun showNumDialog(function: (String) -> Unit) {
|
var dialog = DialogUtil.getDialog(this, R.layout.dialog_input_num)
|
var viewDia = DialogUtil.getView(dialog)
|
viewDia.view_hint_close_car.clickDelay {
|
dialog.dismiss()
|
}
|
|
viewDia.rl_container_null.clickDelay {
|
|
}
|
viewDia.tv_sure_car_num.clickDelay {
|
if (viewDia.et_login_phone.getContent().length != 4) {
|
toast("请输入4位手机尾号")
|
} else {
|
dialog.dismiss()
|
function(viewDia.et_login_phone.getContent())
|
}
|
}
|
}
|
|
fun startNavi(startLat:Double,startLon:Double,endLat:Double,endLon:Double){
|
val start = Poi("", LatLng(startLat,startLon), "")
|
val end = Poi("", LatLng(endLat,endLon), "")
|
val params = AmapNaviParams(start, null, end, AmapNaviType.DRIVER, AmapPageType.NAVI)
|
AmapNaviPage.getInstance().showRouteActivity(applicationContext, params, null)
|
}
|
|
|
private fun callStatue(i: Int, click: () -> Unit) {
|
var map = getMapByAny()
|
map["orderId"] = orderId
|
map["orderType"] = orderType
|
map["state"] = i
|
map["lat"] = MyApplication.getLocation().latitude
|
map["lon"] = MyApplication.getLocation().longitude
|
callNet(Api.process, map) {
|
click()
|
}
|
}
|
|
private fun callStatue(phone: String, i: Int, click: () -> Unit, clickFail: () -> Unit) {
|
var map = getMapByAny()
|
map["orderId"] = orderId
|
map["orderType"] = orderType
|
map["state"] = i
|
map["phone"] = phone
|
map["lat"] = MyApplication.getLocation().latitude
|
map["lon"] = MyApplication.getLocation().longitude
|
callNet(Api.process, map, { click() }) {
|
clickFail()
|
}
|
}
|
|
|
private fun showMoneyTypeDialog() {
|
var pop = DialogUtil.getPopupwindow(this, R.layout.dialog_select_pay_type)
|
var payType = 1 //支付方式(1=宽窄平台收款,2=其他方式收款)
|
pop.showDown(window.decorView)
|
pop.contentView.tv_cancel.setOnClickListener {
|
pop.dismiss()
|
}
|
pop.contentView.tv_ok.setOnClickListener {
|
pop.dismiss()
|
if (payType == 1) {
|
callStatue(6) {
|
startActivity<FillOutActivity>("orderId" to orderId, "orderType" to orderType)
|
finish()
|
}
|
} else {
|
DialogUtil.getDelAndSureDialog(this, "请确定是否收款?", {}, {
|
pop.dismiss()
|
val map = getMapByAny()
|
map["orderId"] = orderId
|
map["orderType"] = orderType
|
map["type"] = payType
|
callStatue(6) {
|
callNet(Api.confirmFees, map) {
|
finish()
|
startActivity<OrderOverActivity>(
|
"orderId" to orderId,
|
"orderType" to orderType
|
)
|
}
|
}
|
})
|
}
|
}
|
pop.contentView.tv_select_ok.setOnClickListener {
|
pop.contentView.tv_select_ok.alpha = 1f
|
pop.contentView.tv_select_ok.textSize = 16f
|
pop.contentView.tv_select_or.alpha = 0.6f
|
pop.contentView.tv_select_or.textSize = 14f
|
payType = 1
|
}
|
pop.contentView.tv_select_or.setOnClickListener {
|
pop.contentView.tv_select_ok.alpha = 0.6f
|
pop.contentView.tv_select_ok.textSize = 14f
|
pop.contentView.tv_select_or.alpha = 1f
|
pop.contentView.tv_select_or.textSize = 16f
|
payType = 2
|
}
|
}
|
|
|
/***
|
* 定位时司机与线路的改变
|
*/
|
private fun initMineLocation() {
|
AMapKit.initLocation(this, AMapLocationListener {
|
it?.let {
|
MyApplication.aMapLocation = it
|
carMarker?.position = LatLng(it.latitude, it.longitude)
|
graylist.add(LatLng(it.latitude, it.longitude))
|
grayline?.remove()
|
grayline = AMapKit.drawLine(this,aMap,graylist,R.color.gray)
|
// queryTrack() //debug调用
|
}
|
orderBean.let {
|
when (it.data.orderState) {
|
2, 3 -> {
|
changeCarThree(false)
|
}
|
5, 6 -> {
|
changeCarFive(false)
|
}
|
}
|
}
|
})
|
}
|
|
//查询猎鹰轨迹
|
private fun queryTrack() {
|
if (orderBean.data.trackId.isNullOrEmpty())
|
return
|
val queryTrackRequest = QueryTrackRequest(
|
serviceIdS,
|
terminalId,
|
orderBean.data.trackId.toLong(), // 轨迹id,传-1表示查询所有轨迹
|
// 1260L, // debug轨迹id
|
// 0L, //开始服务时间
|
System.currentTimeMillis() - 12 * 60 * 60 * 1000, //debug开始时间
|
|
System.currentTimeMillis(),
|
0, // 0不启用去噪 1:去噪
|
0, // 1绑路 0不绑路
|
0, // 0不进行精度过滤 1过滤
|
DriveMode.DRIVING,
|
1, // 距离补偿 1补偿 0不补偿
|
5000, // 距离补偿,只有超过5km的点才启用距离补偿
|
1, // 结果应该包含轨迹点信息
|
1, // 返回第1页数据,由于未指定轨迹,分页将失效
|
100 // 一页不超过100条
|
)
|
aMapTrackClient.queryTerminalTrack(queryTrackRequest, this)
|
}
|
|
private fun changeCarThree(isMove: Boolean) {
|
if (makeMarker != null && carMarker != null) {
|
AMapKit.initRouteLine(
|
this,
|
carMarker!!.position,
|
makeMarker!!.position,
|
object : (MutableList<LatLng>, Float, Long) -> Unit {
|
override fun invoke(p1: MutableList<LatLng>, p2: Float, p3: Long) {
|
var view = creatCarView("距预约点" + AMapKit.getTance(p2))
|
carMarker!!.setIcon(getIcon(view))
|
addline(p1)
|
if (isMove){
|
// moveCamera(aMap, makeMarker!!.position, carMarker!!.position)
|
moveCamera(aMap, carMarker!!.position,25f)
|
}
|
}
|
})
|
}
|
}
|
|
private fun changeCarFive(isMove: Boolean) {
|
if (carMarker != null && endMarker != null) {
|
AMapKit.initRouteLine(
|
this,
|
carMarker!!.position,
|
endMarker!!.position,
|
object : (MutableList<LatLng>, Float, Long) -> Unit {
|
override fun invoke(p1: MutableList<LatLng>, p2: Float, p3: Long) {
|
addline(p1)
|
var view =
|
creatCarView("剩余" + AMapKit.getTance(p2) + "\n" + "预计还需" + p3.toInt() + "分钟")
|
carMarker!!.setIcon(getIcon(view))
|
if (isMove) {
|
// moveCamera(aMap, carMarker!!.position, endMarker!!.position)
|
moveCamera(aMap, carMarker!!.position,25f)
|
}
|
}
|
})
|
}
|
}
|
|
private fun callOrder() {
|
MyApplication.currentOrderId = orderId
|
MyApplication.currentOrderType = orderType
|
var map = getMapByAny()
|
map["orderId"] = orderId
|
map["orderType"] = orderType
|
callNet(Api.queryOrderInfo, map) {
|
orderBean = gson.fromJson(it, OrderBean::class.java)
|
showUi(orderBean)
|
}
|
}
|
|
private fun showUi(orderBean: OrderBean?) {
|
orderBean?.let {
|
tv_name.text = orderBean.data.nickName
|
tv_car_num.text = it.data.historyNum.toString() + "次乘车"
|
tv_time.text = it.data.travelTime_
|
tv_start_address.text = it.data.startAddress
|
tv_end_address.text = it.data.endAddress
|
if (orderType == "1") {
|
tv_red_money.gone()
|
}
|
tv_red_money.text = it.data.tipMoney.toString() + "元红包"
|
showStatueMapUI(it)
|
var latLngList = mutableListOf<LatLng>()
|
for (item in orderBean.data.orderPositionList){
|
latLngList.add(LatLng(item.lat,item.lon))
|
}
|
graylist.clear()
|
graylist.addAll(latLngList)
|
grayline = AMapKit.drawLine(this,aMap,graylist,R.color.gray)
|
}
|
}
|
|
|
private fun getAllMark(it: OrderBean) {
|
if (makeMarker == null) {
|
val view = createView(R.layout.item_map_market_make, this)
|
view.iv_img.setImageResource(R.mipmap.trip_yuyue)
|
makeMarker = addMarker(aMap, it.data.startLat, it.data.startLon, view, "")
|
}
|
makeMarker!!.isVisible = false
|
if (startMarker == null) {
|
val view = createView(R.layout.item_map_market, this)
|
view.iv_img.setImageResource(R.mipmap.starting_point)
|
startMarker = addMarker(aMap, it.data.startLat, it.data.startLon, view, "")
|
}
|
startMarker!!.isVisible = false
|
if (endMarker == null) {
|
val view = createView(R.layout.item_map_market, this)
|
view.iv_img.setImageResource(R.mipmap.end_point)
|
endMarker = addMarker(aMap, it.data.endLat, it.data.endLon, view, "")
|
}
|
endMarker!!.isVisible = false
|
if (carMarker == null) {
|
val carView = creatCarView("")
|
carMarker = addMarker(
|
aMap,
|
MyApplication.getLocation().latitude,
|
MyApplication.getLocation().longitude,
|
carView,
|
""
|
)
|
}
|
carMarker!!.isVisible = false
|
if (markerLine != null) {
|
markerLine!!.isVisible = false
|
}
|
}
|
|
fun creatCarView(content: String): View {
|
val carView = createView(R.layout.item_map_market, this)
|
carView.iv_img.setImageResource(R.mipmap.car_trip)
|
carView.tv_hint.visible()
|
carView.tv_hint.text = content
|
return carView
|
}
|
|
fun creatCarViewHint(content: String): View {
|
val carView = createView(R.layout.item_map_market, this)
|
carView.iv_img.setImageResource(R.mipmap.car_trip)
|
carView.tv_hint.visible()
|
carView.tv_hint.setColorBuild(this, content, R.color.main_yellow, 4, content.length)
|
return carView
|
}
|
|
// 流程操作状态(3=开始出发预约点,4=到达预约点,5=开始服务,6=服务结束)
|
private fun showStatueMapUI(it: OrderBean) {
|
getAllMark(it)
|
tv_Right.visible()
|
when (it.data.orderState) {
|
2, 3 -> {
|
if (it.data.reassign == 1) {
|
tv_Right.gone()
|
}
|
iv_to_gd.visible()
|
makeMarker?.isVisible = true
|
carMarker?.isVisible = true
|
changeCarThree(true)
|
closeTimeStart()
|
if (it.data.orderState == 2) {
|
slide_btn.changeButtonText("出发前往预约地点")
|
setTitleText("准备出发")
|
} else {
|
slide_btn.changeButtonText("到达预约地点")
|
setTitleText("去接客户")
|
|
}
|
}
|
4 -> {
|
iv_to_gd.gone()
|
if (it.data.reassign == 1) {
|
tv_Right.gone()
|
}
|
closeLine()
|
carMarker?.isVisible = true
|
startTimeStart(
|
((System.currentTimeMillis() - DateUtil.dateToStamp(
|
DateUtil.TYPE0,
|
it.data.waitTime
|
)) / 1000).toInt()
|
)
|
moveCamera(aMap, carMarker!!.position)
|
setTitleText("等待客户")
|
slide_btn.changeButtonText("乘客已上车")
|
}
|
5, 6 -> {
|
closeTimeStart()
|
iv_to_gd.visible()
|
tv_Right.gone()
|
startMarker?.isVisible = true
|
endMarker?.isVisible = true
|
carMarker?.isVisible = true
|
changeCarFive(true)
|
setTitleText("服务中")
|
slide_btn.changeButtonText("送达该乘客")
|
if (!orderBean.data.trackId.isNullOrEmpty()){
|
Log.e(TAG_TRACK, "已有轨迹id:${orderBean.data.trackId}")
|
val trackParam = TrackParam(serviceIdS, terminalId)
|
trackParam.trackId = orderBean.data.trackId.toLong()
|
aMapTrackClient.startTrack(trackParam, this) //开始采集位置
|
}
|
}
|
}
|
}
|
|
|
private fun startTimeStart(waitTime: Int) {
|
if (!isTimeStart) {
|
isTimeStart = true
|
refreshTime(waitTime) {
|
var view = creatCarViewHint("您已等待" + getTimeType(it))
|
carMarker!!.setIcon(getIcon(view))
|
}
|
}
|
}
|
|
private var timeDisposable: Disposable? = null
|
|
private fun refreshTime(waitTime: Int, click: (num: Int) -> Unit) {
|
if (null != timeDisposable && !timeDisposable!!.isDisposed) {
|
timeDisposable!!.dispose()
|
}
|
timeDisposable = Observable
|
.interval(1, TimeUnit.SECONDS)
|
.take(100000000)
|
.subscribeOn(Schedulers.computation())
|
.observeOn(AndroidSchedulers.mainThread())
|
.compose(bindUntilEvent(ActivityEvent.DESTROY))
|
.subscribe { aLong ->
|
var num = waitTime + aLong
|
click(num.toInt())
|
}
|
}
|
|
private fun closeTimeStart() {
|
if (timeDisposable != null) {
|
timeDisposable!!.dispose()
|
}
|
}
|
|
override fun onDestroy() {
|
super.onDestroy()
|
if (handler != null) {
|
handler?.removeCallbacksAndMessages(null)
|
}
|
closeTimeStart()
|
}
|
|
|
private fun addline(allLine: MutableList<LatLng>) {
|
closeLine()
|
markerLine = AMapKit.drawLine(this, aMap, allLine)
|
}
|
|
fun closeLine() {
|
if (markerLine != null) {
|
markerLine!!.remove()
|
}
|
}
|
|
fun getTance(startLatLng: LatLng, endLatLng: LatLng, onclick: (tance: Float) -> Unit) {
|
AMapKit.initRouteLine(
|
this,
|
startLatLng,
|
endLatLng,
|
object : (MutableList<LatLng>, Float, Long) -> Unit {
|
override fun invoke(p1: MutableList<LatLng>, p2: Float, p3: Long) {
|
onclick(p2)
|
}
|
})
|
}
|
|
private fun setTrack(trackId:String) {
|
var map = getMapByAny()
|
map["orderId"] = orderId
|
map["orderType"] = orderType
|
map["trackId"] = trackId
|
callNet(Api.getTrackId, map) {
|
}
|
}
|
|
override fun setOnclick() {
|
|
}
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
aMap = initMap(savedInstanceState, map_view)
|
}
|
|
override fun onEventMainThread(event: BaseEvent?) {
|
super.onEventMainThread(event)
|
when (event!!.code) {
|
BaseEvent.REAGASSIGN_SUCCESS -> {
|
MyApplication.currentOrderId = ""
|
MyApplication.currentOrderType = ""
|
finish()
|
}
|
BaseEvent.BACK_CAR_OVER -> {
|
finish()
|
}
|
}
|
}
|
|
override fun onQueryTerminalCallback(p0: QueryTerminalResponse?) {
|
if (p0?.isSuccess == true) {
|
if (p0.tid <= 0) {
|
// terminal还不存在,先创建
|
aMapTrackClient.addTerminal(
|
AddTerminalRequest(terminalName, serviceIdS),
|
this
|
)
|
} else {
|
// terminal已经存在
|
terminalId = p0.tid
|
Log.e(TAG_TRACK, "终端已存在,terminalId:$terminalId")
|
}
|
} else {
|
//请求失败
|
Log.e(TAG_TRACK, "终端查询失败")
|
}
|
}
|
|
override fun onCreateTerminalCallback(p0: AddTerminalResponse?) {
|
if (p0?.isSuccess == true) {
|
terminalId = p0.tid
|
Log.e(TAG_TRACK, "终端创建成功,terminalId:$terminalId")
|
} else {
|
//请求失败
|
Log.e(TAG_TRACK, "终端创建失败")
|
}
|
}
|
|
override fun onDistanceCallback(p0: DistanceResponse?) {
|
Log.e(TAG_TRACK, "onLatestPointCallback")
|
}
|
|
override fun onLatestPointCallback(p0: LatestPointResponse?) {
|
Log.e(TAG_TRACK, "onLatestPointCallback")
|
}
|
|
override fun onHistoryTrackCallback(p0: HistoryTrackResponse?) {
|
Log.e(TAG_TRACK, "onHistoryTrackCallback")
|
}
|
|
override fun onQueryTrackCallback(p0: QueryTrackResponse?) {
|
if (p0?.isSuccess == true) {
|
val tracks = p0.tracks
|
Log.e(TAG_TRACK, "轨迹查询结果:${tracks.firstOrNull()?.points?.map { LatLng(it.lat, it.lng) }?.joinToString("\n") { "${it.latitude},${it.longitude}" }}")
|
} else
|
Log.e(TAG_TRACK, "轨迹查询失败,code:${p0?.errorCode},reason:${p0?.errorMsg},detail:${p0?.errorDetail}")
|
}
|
|
override fun onAddTrackCallback(p0: AddTrackResponse?) {
|
if (p0?.isSuccess == true) {
|
orderBean.data.trackId = p0.trid.toString()
|
Log.e(TAG_TRACK, "轨迹创建成功,轨迹Id:${orderBean.data.trackId}")
|
setTrack(orderBean.data.trackId)
|
val trackParam = TrackParam(serviceIdS, terminalId)
|
trackParam.trackId = orderBean.data.trackId.toLong()
|
aMapTrackClient.startTrack(trackParam, this) //开始采集位置
|
} else {
|
Log.e(TAG_TRACK, "轨迹创建失败")
|
}
|
}
|
|
override fun onParamErrorCallback(p0: ParamErrorResponse?) {
|
Log.e(TAG_TRACK, "onParamErrorCallback")
|
}
|
|
override fun onBindServiceCallback(p0: Int, p1: String?) {
|
Log.e(TAG_TRACK, "onBindServiceCallback")
|
}
|
|
override fun onStartGatherCallback(p0: Int, p1: String?) {
|
if (p0 == ErrorCode.TrackListen.START_GATHER_SUCEE ||
|
p0 == ErrorCode.TrackListen.START_GATHER_ALREADY_STARTED
|
) {
|
Log.e(TAG_TRACK, "定位采集开启成功!")
|
} else {
|
Log.e(TAG_TRACK, "定位采集启动异常!")
|
}
|
}
|
|
override fun onStartTrackCallback(p0: Int, p1: String?) {
|
if (p0 == ErrorCode.TrackListen.START_TRACK_SUCEE ||
|
p0 == ErrorCode.TrackListen.START_TRACK_SUCEE_NO_NETWORK ||
|
p0 == ErrorCode.TrackListen.START_TRACK_ALREADY_STARTED
|
) {
|
// 服务启动成功,继续开启收集上报
|
aMapTrackClient.startGather(this)
|
} else {
|
Log.e(TAG_TRACK, "轨迹上报服务服务启动异常!")
|
}
|
}
|
|
override fun onStopGatherCallback(p0: Int, p1: String?) {
|
Log.e(TAG_TRACK, "onStopGatherCallback:关闭定位采集")
|
}
|
|
override fun onStopTrackCallback(p0: Int, p1: String?) {
|
Log.e(TAG_TRACK, "onStopTrackCallback")
|
}
|
}
|