lmw
2023-05-12 f67802a41f9e01444d1115f34ecc6e1beb05fc3b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
package com.fuban.user.ui.crosscity
 
import android.app.Activity
import android.graphics.Color
import android.os.Bundle
import cn.sinata.xldutils.utils.myToast
import com.amap.api.maps.CameraUpdateFactory
import com.amap.api.maps.model.*
import com.fuban.user.R
import com.fuban.user.network.HttpManager
import com.fuban.user.network.entity.Anchor
import com.fuban.user.network.request
import com.fuban.user.ui.TransparentStatusBarActivity
import kotlinx.android.synthetic.main.activity_confirm_position.*
import org.jetbrains.anko.sdk27.coroutines.onClick
 
class ConfirmPositionActivity:TransparentStatusBarActivity() {
    override fun setContentView() = R.layout.activity_confirm_position
 
    private val lat by lazy {
        intent.getDoubleExtra("lat",0.0)
    }
    private val lon by lazy {
        intent.getDoubleExtra("lon",0.0)
    }
    private val isStart by lazy {
        intent.getBooleanExtra("isStart",true)
    }
    private val aMap by lazy {
        mMapView.map
    }
    private val siteId by lazy {
        intent.getIntExtra("siteId",0)
    }
    private val code by lazy {
        intent.getStringExtra("code")
    }
    private val data by lazy {
        intent.getParcelableArrayListExtra<Anchor>("data")
    }
 
    override fun initClick() {
        tv_back.onClick {
            finish()
        }
        tv_sure.onClick {
            HttpManager.areaMonitoring(siteId,code,"${lon},${lat}").request(this@ConfirmPositionActivity){ _, data->
                data?.apply {
                    if (this == 1){ //在范围内
                        setResult(Activity.RESULT_OK,intent)
                        finish()
                    }else{
                        myToast("该位置不在有效范围内,请重新选择")
                    }
                }
            }
        }
        iv_location.onClick {
            aMap.animateCamera(CameraUpdateFactory.newLatLngZoom(LatLng(lat, lon),17f))
        }
    }
 
    override fun initView() {
        title = if (isStart) "选择上车点" else "选择下车点"
        tv_name.text = intent.getStringExtra("name")
        tv_address.text = intent.getStringExtra("address")
        initMap()
    }
 
    private fun initMap() {
        aMap.uiSettings.isMyLocationButtonEnabled = false//设置默认定位按钮是否显示,非必需设置。
        aMap.uiSettings.setZoomInByScreenCenter(true)
        aMap.uiSettings.isZoomControlsEnabled = false
        aMap.uiSettings.isRotateGesturesEnabled = false
        aMap.uiSettings.isTiltGesturesEnabled = false
        aMap.isMyLocationEnabled = false
        val latLng = LatLng(lat, lon)
        aMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,12f))
        val markerOptions = MarkerOptions()
        markerOptions.position(latLng).icon(BitmapDescriptorFactory.fromResource(R.mipmap.zuobiao))
        aMap.addMarker(markerOptions)
 
        //遍历添加电子围栏
        data.forEach {
            if (it.type == 2){
                val split = it.coordinate.split(";")
                if (split.size == 2){ //坐标;半径,添加圆形围栏
                    val latLon = split[0].split(",")
                    val opts =
                        CircleOptions().center(LatLng(latLon[1].toDouble(), latLon[0].toDouble()))
                            .radius(split[1].toDouble())
                            .fillColor(Color.parseColor("#33FD943A"))
                            .strokeColor(Color.parseColor("#FD943A"))
                            .strokeWidth(2f)
                    aMap.addCircle(opts)
                }else{ //点集合,添加多边形
                    val polygonOptions = PolygonOptions()
                    polygonOptions.addAll(split.map {
                        val latLon = it.split(",")
                        LatLng(latLon[1].toDouble(), latLon[0].toDouble())
                    })
                    polygonOptions.fillColor(Color.parseColor("#33FD943A"))
                        .strokeColor(Color.parseColor("#FD943A"))
                        .strokeWidth(2f)
                    aMap.addPolygon(polygonOptions)
                }
            }
        }
    }
 
    override fun onResume() {
        super.onResume()
        mMapView.onResume()
    }
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        mMapView.onCreate(savedInstanceState)
    }
 
    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        mMapView.onSaveInstanceState(outState)
    }
 
    override fun onLowMemory() {
        super.onLowMemory()
        mMapView.onLowMemory()
    }
 
    override fun onPause() {
        super.onPause()
        mMapView.onPause()
    }
 
    override fun onDestroy() {
        mMapView.onDestroy()
        super.onDestroy()
    }
}