diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java new file mode 100644 index 0000000..ac304b2 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java @@ -0,0 +1,127 @@ +package com.casic.br.operationsite.model; + +import java.util.List; + +public class WorkSiteAreaModel { + + private Integer code; + private List data; + private String message; + private Boolean success; + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Boolean getSuccess() { + return success; + } + + public void setSuccess(Boolean success) { + this.success = success; + } + + public static class DataModel { + private Boolean alarmFlag; + private String deviceCode; + private String deviceId; + private String deviceType; + private String gasValue; + private String lat; + private String lng; + private String location; + private String time; + + public Boolean getAlarmFlag() { + return alarmFlag; + } + + public void setAlarmFlag(Boolean alarmFlag) { + this.alarmFlag = alarmFlag; + } + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getDeviceType() { + return deviceType; + } + + public void setDeviceType(String deviceType) { + this.deviceType = deviceType; + } + + public String getGasValue() { + return gasValue; + } + + public void setGasValue(String gasValue) { + this.gasValue = gasValue; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java new file mode 100644 index 0000000..ac304b2 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java @@ -0,0 +1,127 @@ +package com.casic.br.operationsite.model; + +import java.util.List; + +public class WorkSiteAreaModel { + + private Integer code; + private List data; + private String message; + private Boolean success; + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Boolean getSuccess() { + return success; + } + + public void setSuccess(Boolean success) { + this.success = success; + } + + public static class DataModel { + private Boolean alarmFlag; + private String deviceCode; + private String deviceId; + private String deviceType; + private String gasValue; + private String lat; + private String lng; + private String location; + private String time; + + public Boolean getAlarmFlag() { + return alarmFlag; + } + + public void setAlarmFlag(Boolean alarmFlag) { + this.alarmFlag = alarmFlag; + } + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getDeviceType() { + return deviceType; + } + + public void setDeviceType(String deviceType) { + this.deviceType = deviceType; + } + + public String getGasValue() { + return gasValue; + } + + public void setGasValue(String gasValue) { + this.gasValue = gasValue; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index f764ca3..a067771 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -54,6 +54,15 @@ ): String /** + * 获取工作区域 + */ + @GET("/overview/deviceList") + suspend fun getWorkSiteArea( + @Header("token") token: String, + @Query("projectId") projectId: String + ): String + + /** * 设备分页列表 */ @GET("/device/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java new file mode 100644 index 0000000..ac304b2 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java @@ -0,0 +1,127 @@ +package com.casic.br.operationsite.model; + +import java.util.List; + +public class WorkSiteAreaModel { + + private Integer code; + private List data; + private String message; + private Boolean success; + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Boolean getSuccess() { + return success; + } + + public void setSuccess(Boolean success) { + this.success = success; + } + + public static class DataModel { + private Boolean alarmFlag; + private String deviceCode; + private String deviceId; + private String deviceType; + private String gasValue; + private String lat; + private String lng; + private String location; + private String time; + + public Boolean getAlarmFlag() { + return alarmFlag; + } + + public void setAlarmFlag(Boolean alarmFlag) { + this.alarmFlag = alarmFlag; + } + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getDeviceType() { + return deviceType; + } + + public void setDeviceType(String deviceType) { + this.deviceType = deviceType; + } + + public String getGasValue() { + return gasValue; + } + + public void setGasValue(String gasValue) { + this.gasValue = gasValue; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index f764ca3..a067771 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -54,6 +54,15 @@ ): String /** + * 获取工作区域 + */ + @GET("/overview/deviceList") + suspend fun getWorkSiteArea( + @Header("token") token: String, + @Query("projectId") projectId: String + ): String + + /** * 设备分页列表 */ @GET("/device/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 7a084fc..64942bc 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -69,6 +69,13 @@ } /** + * 获取工作区域 + */ + suspend fun getWorkSiteArea(projectId: String): String { + return api.getWorkSiteArea(AuthenticationHelper.token!!, projectId) + } + + /** * 设备分页列表 */ suspend fun getDeviceList( diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java new file mode 100644 index 0000000..ac304b2 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java @@ -0,0 +1,127 @@ +package com.casic.br.operationsite.model; + +import java.util.List; + +public class WorkSiteAreaModel { + + private Integer code; + private List data; + private String message; + private Boolean success; + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Boolean getSuccess() { + return success; + } + + public void setSuccess(Boolean success) { + this.success = success; + } + + public static class DataModel { + private Boolean alarmFlag; + private String deviceCode; + private String deviceId; + private String deviceType; + private String gasValue; + private String lat; + private String lng; + private String location; + private String time; + + public Boolean getAlarmFlag() { + return alarmFlag; + } + + public void setAlarmFlag(Boolean alarmFlag) { + this.alarmFlag = alarmFlag; + } + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getDeviceType() { + return deviceType; + } + + public void setDeviceType(String deviceType) { + this.deviceType = deviceType; + } + + public String getGasValue() { + return gasValue; + } + + public void setGasValue(String gasValue) { + this.gasValue = gasValue; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index f764ca3..a067771 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -54,6 +54,15 @@ ): String /** + * 获取工作区域 + */ + @GET("/overview/deviceList") + suspend fun getWorkSiteArea( + @Header("token") token: String, + @Query("projectId") projectId: String + ): String + + /** * 设备分页列表 */ @GET("/device/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 7a084fc..64942bc 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -69,6 +69,13 @@ } /** + * 获取工作区域 + */ + suspend fun getWorkSiteArea(projectId: String): String { + return api.getWorkSiteArea(AuthenticationHelper.token!!, projectId) + } + + /** * 设备分页列表 */ suspend fun getDeviceList( diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 5ef0909..8b3a4aa 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -1,15 +1,16 @@ package com.casic.br.operationsite.view +import android.graphics.Color import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions +import com.amap.api.maps.CameraUpdateFactory +import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi -import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.maps.model.PolygonOptions import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.initLayoutImmersionBar -import com.casic.br.operationsite.extensions.showRouteOnMap import com.casic.br.operationsite.model.DeviceConfigModel import com.casic.br.operationsite.utils.DeviceType import com.casic.br.operationsite.utils.LoadingDialogHub @@ -20,22 +21,21 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_site_tab.* import kotlinx.android.synthetic.main.include_base_title.* + class WorkSiteTabActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var deviceViewModel: DeviceViewModel private lateinit var projectId: String - private val geocoderSearch by lazy { GeocodeSearch(this) } - private var latLng: LatLng? = null + private val polygonOptions by lazy { PolygonOptions() } + private val latlngs: MutableList = ArrayList() override fun initLayoutView(): Int = R.layout.activity_site_tab @@ -74,44 +74,6 @@ phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") locationView.text = String.format("所属道路:${it.data.workRoad}") - -// val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) -// val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) -// aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { -// override fun onFinish() { -// //添加Marker -// val markerOptions = MarkerOptions() -// .position(latLng) -// .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) -// .draggable(true) -// aMap.addMarker(markerOptions) -// } -// -// override fun onCancel() { -// -// } -// }) -// -// val queryParam = RegeocodeQuery( -// LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), -// 200f, -// GeocodeSearch.AMAP -// ) -// geocoderSearch.getFromLocationAsyn(queryParam) -// geocoderSearch.setOnGeocodeSearchListener(object : -// GeocodeSearch.OnGeocodeSearchListener { -// override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { -// if (rCode == 1000) { -// locationView.text = String.format( -// "地址:${result?.regeocodeAddress?.formatAddress}" -// ) -// } -// } -// -// override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { -// -// } -// }) } } @@ -146,6 +108,32 @@ } } } + + deviceViewModel.getWorkSiteArea(projectId) + deviceViewModel.workSiteAreaResult.observe(this) { + if (it.code == 200) { + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { data -> + latitudeList.add(data.lat.toDouble()) + longitudeList.add(data.lng.toDouble()) + + latlngs.add(LatLng(data.lat.toDouble(), data.lng.toDouble())) + } + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 16f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) + + //绘制工作区域矩形 + aMap.addPolygon( + polygonOptions.addAll(latlngs).strokeWidth(5f).strokeColor(Color.RED) + .fillColor(Color.argb(50, 0, 0, 255)) + ) + } + } } override fun observeRequestState() { @@ -158,29 +146,6 @@ } override fun initEvent() { - navigationView.setOnClickListener { - if (latLng == null) { - "经纬度异常,无法开启导航".show(this) - return@setOnClickListener - } - AlertControlDialog.Builder() - .setContext(this) - .setTitle("提示") - .setMessage("确定要前往吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - Poi("", latLng, "").showRouteOnMap(this@WorkSiteTabActivity) - } - - override fun onCancelClick() { - - } - }).build().show() - } - alarmTextView.setOnClickListener { navigatePageTo() } diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java new file mode 100644 index 0000000..ac304b2 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java @@ -0,0 +1,127 @@ +package com.casic.br.operationsite.model; + +import java.util.List; + +public class WorkSiteAreaModel { + + private Integer code; + private List data; + private String message; + private Boolean success; + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Boolean getSuccess() { + return success; + } + + public void setSuccess(Boolean success) { + this.success = success; + } + + public static class DataModel { + private Boolean alarmFlag; + private String deviceCode; + private String deviceId; + private String deviceType; + private String gasValue; + private String lat; + private String lng; + private String location; + private String time; + + public Boolean getAlarmFlag() { + return alarmFlag; + } + + public void setAlarmFlag(Boolean alarmFlag) { + this.alarmFlag = alarmFlag; + } + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getDeviceType() { + return deviceType; + } + + public void setDeviceType(String deviceType) { + this.deviceType = deviceType; + } + + public String getGasValue() { + return gasValue; + } + + public void setGasValue(String gasValue) { + this.gasValue = gasValue; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index f764ca3..a067771 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -54,6 +54,15 @@ ): String /** + * 获取工作区域 + */ + @GET("/overview/deviceList") + suspend fun getWorkSiteArea( + @Header("token") token: String, + @Query("projectId") projectId: String + ): String + + /** * 设备分页列表 */ @GET("/device/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 7a084fc..64942bc 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -69,6 +69,13 @@ } /** + * 获取工作区域 + */ + suspend fun getWorkSiteArea(projectId: String): String { + return api.getWorkSiteArea(AuthenticationHelper.token!!, projectId) + } + + /** * 设备分页列表 */ suspend fun getDeviceList( diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 5ef0909..8b3a4aa 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -1,15 +1,16 @@ package com.casic.br.operationsite.view +import android.graphics.Color import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions +import com.amap.api.maps.CameraUpdateFactory +import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi -import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.maps.model.PolygonOptions import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.initLayoutImmersionBar -import com.casic.br.operationsite.extensions.showRouteOnMap import com.casic.br.operationsite.model.DeviceConfigModel import com.casic.br.operationsite.utils.DeviceType import com.casic.br.operationsite.utils.LoadingDialogHub @@ -20,22 +21,21 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_site_tab.* import kotlinx.android.synthetic.main.include_base_title.* + class WorkSiteTabActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var deviceViewModel: DeviceViewModel private lateinit var projectId: String - private val geocoderSearch by lazy { GeocodeSearch(this) } - private var latLng: LatLng? = null + private val polygonOptions by lazy { PolygonOptions() } + private val latlngs: MutableList = ArrayList() override fun initLayoutView(): Int = R.layout.activity_site_tab @@ -74,44 +74,6 @@ phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") locationView.text = String.format("所属道路:${it.data.workRoad}") - -// val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) -// val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) -// aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { -// override fun onFinish() { -// //添加Marker -// val markerOptions = MarkerOptions() -// .position(latLng) -// .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) -// .draggable(true) -// aMap.addMarker(markerOptions) -// } -// -// override fun onCancel() { -// -// } -// }) -// -// val queryParam = RegeocodeQuery( -// LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), -// 200f, -// GeocodeSearch.AMAP -// ) -// geocoderSearch.getFromLocationAsyn(queryParam) -// geocoderSearch.setOnGeocodeSearchListener(object : -// GeocodeSearch.OnGeocodeSearchListener { -// override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { -// if (rCode == 1000) { -// locationView.text = String.format( -// "地址:${result?.regeocodeAddress?.formatAddress}" -// ) -// } -// } -// -// override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { -// -// } -// }) } } @@ -146,6 +108,32 @@ } } } + + deviceViewModel.getWorkSiteArea(projectId) + deviceViewModel.workSiteAreaResult.observe(this) { + if (it.code == 200) { + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { data -> + latitudeList.add(data.lat.toDouble()) + longitudeList.add(data.lng.toDouble()) + + latlngs.add(LatLng(data.lat.toDouble(), data.lng.toDouble())) + } + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 16f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) + + //绘制工作区域矩形 + aMap.addPolygon( + polygonOptions.addAll(latlngs).strokeWidth(5f).strokeColor(Color.RED) + .fillColor(Color.argb(50, 0, 0, 255)) + ) + } + } } override fun observeRequestState() { @@ -158,29 +146,6 @@ } override fun initEvent() { - navigationView.setOnClickListener { - if (latLng == null) { - "经纬度异常,无法开启导航".show(this) - return@setOnClickListener - } - AlertControlDialog.Builder() - .setContext(this) - .setTitle("提示") - .setMessage("确定要前往吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - Poi("", latLng, "").showRouteOnMap(this@WorkSiteTabActivity) - } - - override fun onCancelClick() { - - } - }).build().show() - } - alarmTextView.setOnClickListener { navigatePageTo() } diff --git a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt index cc73dd7..a05134b 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt @@ -7,6 +7,7 @@ import com.casic.br.operationsite.model.CommonResultModel import com.casic.br.operationsite.model.DeviceListModel import com.casic.br.operationsite.model.MethaneThresholdModel +import com.casic.br.operationsite.model.WorkSiteAreaModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -21,6 +22,7 @@ val deviceModels = MutableLiveData() val setThresholdResult = MutableLiveData() val thresholdResult = MutableLiveData() + val workSiteAreaResult = MutableLiveData() fun getDeviceList( deviceCode: String, deviceType: String, projectId: String, status: String, page: Int @@ -82,4 +84,23 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getWorkSiteArea(projectId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getWorkSiteArea(projectId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + workSiteAreaResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java new file mode 100644 index 0000000..ac304b2 --- /dev/null +++ b/app/src/main/java/com/casic/br/operationsite/model/WorkSiteAreaModel.java @@ -0,0 +1,127 @@ +package com.casic.br.operationsite.model; + +import java.util.List; + +public class WorkSiteAreaModel { + + private Integer code; + private List data; + private String message; + private Boolean success; + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Boolean getSuccess() { + return success; + } + + public void setSuccess(Boolean success) { + this.success = success; + } + + public static class DataModel { + private Boolean alarmFlag; + private String deviceCode; + private String deviceId; + private String deviceType; + private String gasValue; + private String lat; + private String lng; + private String location; + private String time; + + public Boolean getAlarmFlag() { + return alarmFlag; + } + + public void setAlarmFlag(Boolean alarmFlag) { + this.alarmFlag = alarmFlag; + } + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getDeviceId() { + return deviceId; + } + + public void setDeviceId(String deviceId) { + this.deviceId = deviceId; + } + + public String getDeviceType() { + return deviceType; + } + + public void setDeviceType(String deviceType) { + this.deviceType = deviceType; + } + + public String getGasValue() { + return gasValue; + } + + public void setGasValue(String gasValue) { + this.gasValue = gasValue; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getLocation() { + return location; + } + + public void setLocation(String location) { + this.location = location; + } + + public String getTime() { + return time; + } + + public void setTime(String time) { + this.time = time; + } + } +} diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt index f764ca3..a067771 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitService.kt @@ -54,6 +54,15 @@ ): String /** + * 获取工作区域 + */ + @GET("/overview/deviceList") + suspend fun getWorkSiteArea( + @Header("token") token: String, + @Query("projectId") projectId: String + ): String + + /** * 设备分页列表 */ @GET("/device/listPage") diff --git a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt index 7a084fc..64942bc 100644 --- a/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt +++ b/app/src/main/java/com/casic/br/operationsite/retrofit/RetrofitServiceManager.kt @@ -69,6 +69,13 @@ } /** + * 获取工作区域 + */ + suspend fun getWorkSiteArea(projectId: String): String { + return api.getWorkSiteArea(AuthenticationHelper.token!!, projectId) + } + + /** * 设备分页列表 */ suspend fun getDeviceList( diff --git a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt index 5ef0909..8b3a4aa 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/WorkSiteTabActivity.kt @@ -1,15 +1,16 @@ package com.casic.br.operationsite.view +import android.graphics.Color import android.os.Bundle import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions +import com.amap.api.maps.CameraUpdateFactory +import com.amap.api.maps.model.CameraPosition import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi -import com.amap.api.services.geocoder.GeocodeSearch +import com.amap.api.maps.model.PolygonOptions import com.casic.br.operationsite.R import com.casic.br.operationsite.extensions.initLayoutImmersionBar -import com.casic.br.operationsite.extensions.showRouteOnMap import com.casic.br.operationsite.model.DeviceConfigModel import com.casic.br.operationsite.utils.DeviceType import com.casic.br.operationsite.utils.LoadingDialogHub @@ -20,22 +21,21 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo -import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.vm.LoadState -import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import com.pengxh.kt.lite.widget.dialog.BottomActionSheet import kotlinx.android.synthetic.main.activity_site_tab.* import kotlinx.android.synthetic.main.include_base_title.* + class WorkSiteTabActivity : KotlinBaseActivity() { private lateinit var aMap: AMap private lateinit var workSiteViewModel: WorkSiteViewModel private lateinit var deviceViewModel: DeviceViewModel private lateinit var projectId: String - private val geocoderSearch by lazy { GeocodeSearch(this) } - private var latLng: LatLng? = null + private val polygonOptions by lazy { PolygonOptions() } + private val latlngs: MutableList = ArrayList() override fun initLayoutView(): Int = R.layout.activity_site_tab @@ -74,44 +74,6 @@ phoneNumberView.text = String.format("联系电话:${it.data.workPersonPhoneNumber}") workSiteDescView.text = String.format("现场情况:${it.data.workSiteDesc}") locationView.text = String.format("所属道路:${it.data.workRoad}") - -// val cameraPosition = CameraPosition(latLng, 13f, 0f, 0f) -// val newCameraPosition = CameraUpdateFactory.newCameraPosition(cameraPosition) -// aMap.animateCamera(newCameraPosition, 1500, object : AMap.CancelableCallback { -// override fun onFinish() { -// //添加Marker -// val markerOptions = MarkerOptions() -// .position(latLng) -// .icon(BitmapDescriptorFactory.fromResource(R.mipmap.well_location)) -// .draggable(true) -// aMap.addMarker(markerOptions) -// } -// -// override fun onCancel() { -// -// } -// }) -// -// val queryParam = RegeocodeQuery( -// LatLonPoint(detailData.latitude.toDouble(), detailData.longitude.toDouble()), -// 200f, -// GeocodeSearch.AMAP -// ) -// geocoderSearch.getFromLocationAsyn(queryParam) -// geocoderSearch.setOnGeocodeSearchListener(object : -// GeocodeSearch.OnGeocodeSearchListener { -// override fun onRegeocodeSearched(result: RegeocodeResult?, rCode: Int) { -// if (rCode == 1000) { -// locationView.text = String.format( -// "地址:${result?.regeocodeAddress?.formatAddress}" -// ) -// } -// } -// -// override fun onGeocodeSearched(result: GeocodeResult?, rCode: Int) { -// -// } -// }) } } @@ -146,6 +108,32 @@ } } } + + deviceViewModel.getWorkSiteArea(projectId) + deviceViewModel.workSiteAreaResult.observe(this) { + if (it.code == 200) { + val latitudeList: MutableList = ArrayList() + val longitudeList: MutableList = ArrayList() + it.data.forEach { data -> + latitudeList.add(data.lat.toDouble()) + longitudeList.add(data.lng.toDouble()) + + latlngs.add(LatLng(data.lat.toDouble(), data.lng.toDouble())) + } + //计算所有点的中心点位置 + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 16f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate) + + //绘制工作区域矩形 + aMap.addPolygon( + polygonOptions.addAll(latlngs).strokeWidth(5f).strokeColor(Color.RED) + .fillColor(Color.argb(50, 0, 0, 255)) + ) + } + } } override fun observeRequestState() { @@ -158,29 +146,6 @@ } override fun initEvent() { - navigationView.setOnClickListener { - if (latLng == null) { - "经纬度异常,无法开启导航".show(this) - return@setOnClickListener - } - AlertControlDialog.Builder() - .setContext(this) - .setTitle("提示") - .setMessage("确定要前往吗") - .setNegativeButton("取消") - .setPositiveButton("确定") - .setOnDialogButtonClickListener(object : - AlertControlDialog.OnDialogButtonClickListener { - override fun onConfirmClick() { - Poi("", latLng, "").showRouteOnMap(this@WorkSiteTabActivity) - } - - override fun onCancelClick() { - - } - }).build().show() - } - alarmTextView.setOnClickListener { navigatePageTo() } diff --git a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt index cc73dd7..a05134b 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/DeviceViewModel.kt @@ -7,6 +7,7 @@ import com.casic.br.operationsite.model.CommonResultModel import com.casic.br.operationsite.model.DeviceListModel import com.casic.br.operationsite.model.MethaneThresholdModel +import com.casic.br.operationsite.model.WorkSiteAreaModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager import com.google.gson.Gson import com.google.gson.reflect.TypeToken @@ -21,6 +22,7 @@ val deviceModels = MutableLiveData() val setThresholdResult = MutableLiveData() val thresholdResult = MutableLiveData() + val workSiteAreaResult = MutableLiveData() fun getDeviceList( deviceCode: String, deviceType: String, projectId: String, status: String, page: Int @@ -82,4 +84,23 @@ it.cause.toString().show(BaseApplication.get()) it.printStackTrace() }) + + fun getWorkSiteArea(projectId: String) = launch({ + loadState.value = LoadState.Loading + val response = RetrofitServiceManager.getWorkSiteArea(projectId) + val responseCode = response.separateResponseCode() + if (responseCode == 200) { + workSiteAreaResult.value = gson.fromJson( + response, object : TypeToken() {}.type + ) + loadState.value = LoadState.Success + } else { + loadState.value = LoadState.Fail + response.toErrorMessage().show(BaseApplication.get()) + } + }, { + loadState.value = LoadState.Fail + it.cause.toString().show(BaseApplication.get()) + it.printStackTrace() + }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_site_tab.xml b/app/src/main/res/layout/activity_site_tab.xml index b0d6687..b69287c 100644 --- a/app/src/main/res/layout/activity_site_tab.xml +++ b/app/src/main/res/layout/activity_site_tab.xml @@ -88,31 +88,13 @@ android:layout_height="0dp" android:layout_weight="1" /> - - - - - - + android:padding="@dimen/dp_10" + android:text="所属道路:" + android:textSize="@dimen/sp_14" />