|
@@ -35,6 +35,7 @@ import com.google.gson.JsonObject
|
|
|
import com.google.gson.JsonParser
|
|
|
import com.google.gson.JsonPrimitive
|
|
|
import com.squareup.otto.Subscribe
|
|
|
+import kotlinx.android.synthetic.main.frag_map.*
|
|
|
import java.util.concurrent.ExecutionException
|
|
|
import kotlin.math.abs
|
|
|
|
|
@@ -45,6 +46,14 @@ import kotlin.math.abs
|
|
|
* 描述:地图界面
|
|
|
*/
|
|
|
class FragmentMap : CrAnimationFragment() {
|
|
|
+ /**
|
|
|
+ * 事件监听接口
|
|
|
+ */
|
|
|
+ interface EventListener {
|
|
|
+ // todo: 2023/6/15 案件上传监听
|
|
|
+ fun onCaseUpdate(selCase: CaseModel)
|
|
|
+ }
|
|
|
+
|
|
|
// define: 2023/3/14 地图容器
|
|
|
private var mapView: MapView? = null
|
|
|
|
|
@@ -89,7 +98,7 @@ class FragmentMap : CrAnimationFragment() {
|
|
|
val MEDIA_TYPE_REPEAT_YES = "5"; // define: 2023/4/13 已上传的复飞案件
|
|
|
|
|
|
// todo: 2023/4/14 字段相关常量
|
|
|
- companion object{
|
|
|
+ companion object {
|
|
|
val FIELD_NET_CASE_POLYGON_AJH = "AJH"; // define: 2023/4/13 网络案件的案件编号
|
|
|
val FIELD_CASE_POLYGON_ANJID = "ANJID"; // define: 2023/4/13 案件ID
|
|
|
val FIELD_CASE_POLYGON_MJ = "MJ"; // define: 2023/4/13 面积
|
|
@@ -159,6 +168,9 @@ class FragmentMap : CrAnimationFragment() {
|
|
|
// todo: 2023/4/18 地图Touch事件
|
|
|
private var mapTouch: MapTouch? = null
|
|
|
|
|
|
+ // todo: 2023/6/15 内部监听 自行设置
|
|
|
+ private var eventListener: EventListener? = null
|
|
|
+
|
|
|
|
|
|
/**
|
|
|
* 重写创建View方法
|
|
@@ -254,6 +266,8 @@ class FragmentMap : CrAnimationFragment() {
|
|
|
)
|
|
|
}
|
|
|
}
|
|
|
+ } else if (p0!!.geometry.geometryType == GeometryType.POINT && mapTouch!!.getAction() == MapAction.MapTapStopMoveWaypoint) {
|
|
|
+ caseMoveWaypointToEnd(p0!!.geometry as Point)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -323,7 +337,7 @@ class FragmentMap : CrAnimationFragment() {
|
|
|
|
|
|
// todo: 2023/6/12 添加案件点
|
|
|
override fun onAppendWaypoint(location: Point, longitude: String, latitude: String) {
|
|
|
- caseAppendWaypointToMap(location,longitude,latitude)
|
|
|
+ caseAppendWaypointToMap(location, longitude, latitude)
|
|
|
}
|
|
|
|
|
|
// todo: 2023/6/14 删除案件点
|
|
@@ -336,10 +350,11 @@ class FragmentMap : CrAnimationFragment() {
|
|
|
caseMoveWaypointBySelect(location)
|
|
|
}
|
|
|
|
|
|
- // todo: 2023/6/14 移动完成
|
|
|
- override fun onMoveWaypointToEnd(location: Point) {
|
|
|
- caseMoveWaypointToEnd(location)
|
|
|
+ // todo: 2023/6/15 案件分享及上传选择回调
|
|
|
+ override fun onCaseUploadBySelect(screenPoint: android.graphics.Point) {
|
|
|
+ caseUpload(screenPoint)
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -1030,41 +1045,49 @@ class FragmentMap : CrAnimationFragment() {
|
|
|
var queryParams = QueryParameters()
|
|
|
queryParams.geometry = polygon
|
|
|
queryParams.spatialRelationship = QueryParameters.SpatialRelationship.CONTAINS
|
|
|
- queryParams.whereClause = String.format("%s='%s' or %s='%s'",FIELD_CASE_ISUP,MEDIA_TYPE_WJ_NO,FIELD_CASE_ISUP,MEDIA_TYPE_WJ_YES)
|
|
|
+ queryParams.whereClause = String.format(
|
|
|
+ "%s='%s' or %s='%s'",
|
|
|
+ FIELD_CASE_ISUP,
|
|
|
+ MEDIA_TYPE_WJ_NO,
|
|
|
+ FIELD_CASE_ISUP,
|
|
|
+ MEDIA_TYPE_WJ_YES
|
|
|
+ )
|
|
|
var queryAsync = fTableMedia?.queryFeaturesAsync(queryParams)
|
|
|
queryAsync?.addDoneListener(Runnable {
|
|
|
- if(queryAsync.isDone){
|
|
|
+ if (queryAsync.isDone) {
|
|
|
// todo: 2023/6/12 获取查询结果
|
|
|
var featureResult = queryAsync.get().iterator()
|
|
|
var features = ArrayList<Feature>()
|
|
|
- while (featureResult.hasNext()){
|
|
|
+ while (featureResult.hasNext()) {
|
|
|
features.add(featureResult.next())
|
|
|
}
|
|
|
// todo: 2023/6/12 如果存在违建点 则赋值 否则为 空
|
|
|
var caseId = ""
|
|
|
- if(features.size > 0){
|
|
|
+ if (features.size > 0) {
|
|
|
caseId = features[0].attributes[FIELD_CASE_NAME].toString()
|
|
|
}
|
|
|
// todo: 2023/6/12 计算面积 并添加要素到图层
|
|
|
- var area = abs(GeometryEngine.area(polygon))*0.0015
|
|
|
+ var area = abs(GeometryEngine.area(polygon)) * 0.0015
|
|
|
var wjFeature = fTableCasePolygon?.createFeature()
|
|
|
wjFeature!!.let {
|
|
|
it.attributes[FIELD_CASE_POLYGON_ANJID] = caseId
|
|
|
- it.attributes[FIELD_CASE_POLYGON_MJ]= area
|
|
|
- if(caseId == ""){
|
|
|
- it.attributes[FIELD_CASE_POLYGON_BZ] = FIELD_CASE_POLYGON_BZ_VALUE_NO
|
|
|
- }else{
|
|
|
- it.attributes[FIELD_CASE_POLYGON_BZ] = FIELD_CASE_POLYGON_BZ_VALUE_YES
|
|
|
+ it.attributes[FIELD_CASE_POLYGON_MJ] = area
|
|
|
+ if (caseId == "") {
|
|
|
+ it.attributes[FIELD_CASE_POLYGON_BZ] =
|
|
|
+ FIELD_CASE_POLYGON_BZ_VALUE_NO
|
|
|
+ } else {
|
|
|
+ it.attributes[FIELD_CASE_POLYGON_BZ] =
|
|
|
+ FIELD_CASE_POLYGON_BZ_VALUE_YES
|
|
|
}
|
|
|
it.geometry = polygon
|
|
|
var appendAsync = fTableCasePolygon?.addFeatureAsync(it)
|
|
|
- appendAsync?.addDoneListener(Runnable{
|
|
|
- try{
|
|
|
- if(appendAsync.isDone){
|
|
|
+ appendAsync?.addDoneListener(Runnable {
|
|
|
+ try {
|
|
|
+ if (appendAsync.isDone) {
|
|
|
showInformation("案件保存成功!")
|
|
|
sketchEditor?.stop()
|
|
|
}
|
|
|
- }catch (ex:java.lang.IllegalArgumentException){
|
|
|
+ } catch (ex: java.lang.IllegalArgumentException) {
|
|
|
showError("案件保存失败!")
|
|
|
}
|
|
|
})
|
|
@@ -1080,25 +1103,25 @@ class FragmentMap : CrAnimationFragment() {
|
|
|
/**
|
|
|
* 删除保存的案件图斑
|
|
|
*/
|
|
|
- private fun caseDelete(){
|
|
|
+ private fun caseDelete() {
|
|
|
var queryParameters = QueryParameters()
|
|
|
queryParameters.whereClause = "1=1"
|
|
|
var queryAsync = fTableCasePolygon?.queryFeaturesAsync(queryParameters)
|
|
|
queryAsync?.addDoneListener(Runnable {
|
|
|
- try{
|
|
|
- if(queryAsync.isDone){
|
|
|
+ try {
|
|
|
+ if (queryAsync.isDone) {
|
|
|
var deleteAsync = fTableCasePolygon?.deleteFeaturesAsync(queryAsync.get())
|
|
|
- deleteAsync?.addDoneListener(Runnable{
|
|
|
+ deleteAsync?.addDoneListener(Runnable {
|
|
|
try {
|
|
|
- if(deleteAsync.isDone){
|
|
|
+ if (deleteAsync.isDone) {
|
|
|
showInformation("删除成功!")
|
|
|
}
|
|
|
- }catch (ex:java.lang.IllegalArgumentException){
|
|
|
+ } catch (ex: java.lang.IllegalArgumentException) {
|
|
|
showError("删除失败!")
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
- }catch (ex:java.lang.IllegalArgumentException){
|
|
|
+ } catch (ex: java.lang.IllegalArgumentException) {
|
|
|
showError("删除失败!")
|
|
|
}
|
|
|
})
|
|
@@ -1110,9 +1133,10 @@ class FragmentMap : CrAnimationFragment() {
|
|
|
* @param longitude String 经度
|
|
|
* @param latitude String 纬度
|
|
|
*/
|
|
|
- private fun caseAppendWaypointToMap(location: Point,longitude: String,latitude: String){
|
|
|
+ private fun caseAppendWaypointToMap(location: Point, longitude: String, latitude: String) {
|
|
|
// todo: 2023/6/13 创建案件点模型
|
|
|
- var caseModel = CaseModel(longitude.toDouble(),latitude.toDouble(),0.0,0.0,CaseType.MediaTypeWjNo)
|
|
|
+ var caseModel =
|
|
|
+ CaseModel(longitude.toDouble(), latitude.toDouble(), 0.0, 0.0, CaseType.MediaTypeWjNo)
|
|
|
// todo: 2023/6/13 创建案件点图元
|
|
|
var caseFeature = fTableMedia?.createFeature()
|
|
|
// todo: 2023/6/13 添加属性
|
|
@@ -1122,69 +1146,139 @@ class FragmentMap : CrAnimationFragment() {
|
|
|
// todo: 2023/6/13 添加到地图中
|
|
|
var appendAsync = fTableMedia?.addFeatureAsync(caseFeature)
|
|
|
appendAsync?.addDoneListener(Runnable {
|
|
|
- try{
|
|
|
- if(appendAsync.isDone){
|
|
|
+ try {
|
|
|
+ if (appendAsync.isDone) {
|
|
|
fLayerMedia?.clearSelection()
|
|
|
fLayerMedia?.selectFeature(caseFeature)
|
|
|
- caseUpdatePolygonByFeature(caseFeature,true,object:iCompletion{
|
|
|
+ caseUpdatePolygonByFeature(caseFeature, object : iCompletion {
|
|
|
override fun onCompletion(result: ResultModel) {
|
|
|
- if (result.isSuccess == true){
|
|
|
- CrUtil.showMessage(String.format("案件点追加成功 %s",caseFeature.attributes[FIELD_CASE_NAME]))
|
|
|
- }else{
|
|
|
+ if (result.isSuccess == true) {
|
|
|
+ CrUtil.showMessage(
|
|
|
+ String.format(
|
|
|
+ "案件点追加成功 %s",
|
|
|
+ caseFeature.attributes[FIELD_CASE_NAME]
|
|
|
+ )
|
|
|
+ )
|
|
|
+ } else {
|
|
|
showError(result.message!!)
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
- }catch (ex:java.lang.IllegalArgumentException){
|
|
|
+ } catch (ex: java.lang.IllegalArgumentException) {
|
|
|
showError("案件点添加错误!")
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 更新案件点对应的案件对象
|
|
|
- * @param geom Feature 案件点
|
|
|
- * @param isAppend Boolean ture表示为追加案件点 false表示删除案件点
|
|
|
- * @param callback iCompletion 回调
|
|
|
+ * 根据案件点要素图元的案件编号查询到与之关联的案件面,并进行初始化
|
|
|
+ * @param geom Feature 案件点要素
|
|
|
+ * @param callback iCompletion 完成回调
|
|
|
*/
|
|
|
- private fun caseUpdatePolygonByFeature(geom:Feature,isAppend:Boolean,callback:iCompletion){
|
|
|
+ private fun caseClearPolygonByFeature(geom: Feature, callback: iCompletion) {
|
|
|
// todo: 2023/6/13 获取案件ID
|
|
|
val caseId = geom.attributes[FIELD_CASE_NAME]
|
|
|
- // todo: 2023/6/13 先进行空间查询 查询案件点对应的案件面
|
|
|
+ // todo: 2023/6/15 先判断是否存在与该案件点名称相同的案件图斑 将其标志清除
|
|
|
var queryParameters = QueryParameters()
|
|
|
- queryParameters.geometry = geom.geometry
|
|
|
- queryParameters.spatialRelationship = QueryParameters.SpatialRelationship.INTERSECTS
|
|
|
- queryParameters.whereClause = "1=1"
|
|
|
- var queryAsync = fTableCasePolygon!!.queryFeaturesAsync(queryParameters)
|
|
|
- queryAsync?.addDoneListener(Runnable{
|
|
|
+ queryParameters.whereClause = String.format("%s = '%s'", FIELD_CASE_POLYGON_ANJID, caseId)
|
|
|
+ var asyncQuery = fTableCasePolygon?.queryFeaturesAsync(queryParameters)
|
|
|
+ asyncQuery?.addDoneListener(Runnable {
|
|
|
try {
|
|
|
- if(queryAsync.isDone){
|
|
|
- var features = queryAsync.get()
|
|
|
- for(fea in features){
|
|
|
- if(isAppend){
|
|
|
- fea.attributes[FIELD_CASE_POLYGON_ANJID] = caseId
|
|
|
- fea.attributes[FIELD_CASE_POLYGON_BZ] = FIELD_CASE_POLYGON_BZ_VALUE_YES
|
|
|
- }else{
|
|
|
- fea.attributes[FIELD_CASE_POLYGON_ANJID] = ""
|
|
|
- fea.attributes[FIELD_CASE_POLYGON_BZ] = FIELD_CASE_POLYGON_BZ_VALUE_NO
|
|
|
- }
|
|
|
+ if (asyncQuery.isDone) {
|
|
|
+ var features = mutableListOf<Feature>()
|
|
|
+ for (fea in asyncQuery.get()) {
|
|
|
+ fea.attributes[FIELD_CASE_POLYGON_ANJID] = ""
|
|
|
+ fea.attributes[FIELD_CASE_POLYGON_BZ] = FIELD_CASE_POLYGON_BZ_VALUE_NO
|
|
|
+ features.add(fea)
|
|
|
}
|
|
|
- // todo: 2023/6/13 更新
|
|
|
- var updateAsync = fTableCasePolygon!!.updateFeaturesAsync(features)
|
|
|
- updateAsync?.addDoneListener(Runnable {
|
|
|
+ var asyncUpdate = fTableCasePolygon?.updateFeaturesAsync(features)
|
|
|
+ asyncUpdate?.addDoneListener(Runnable {
|
|
|
try {
|
|
|
- if(updateAsync.isDone){
|
|
|
- // todo: 2023/6/13 更新完成
|
|
|
- if(callback != null) callback.onCompletion(ResultModel(true,"成功!"))
|
|
|
+ if (asyncUpdate.isDone) {
|
|
|
+ if (callback != null) callback.onCompletion(ResultModel(true, ""))
|
|
|
}
|
|
|
- }catch (ex:java.lang.IllegalArgumentException){
|
|
|
- if(callback != null) callback.onCompletion(ResultModel(false,"案件对象更新失败!"))
|
|
|
+ } catch (ex: java.lang.IllegalArgumentException) {
|
|
|
+ if (callback != null) callback.onCompletion(
|
|
|
+ ResultModel(
|
|
|
+ false,
|
|
|
+ "案件面初始化错误!"
|
|
|
+ )
|
|
|
+ )
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ } catch (ex: java.lang.IllegalArgumentException) {
|
|
|
+ if (callback != null) callback.onCompletion(ResultModel(false, "案件面初始化错误!"))
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 更新案件点对应的案件对象
|
|
|
+ * @param geom Feature 案件点
|
|
|
+ * @param callback iCompletion 回调
|
|
|
+ */
|
|
|
+ private fun caseUpdatePolygonByFeature(geom: Feature, callback: iCompletion) {
|
|
|
+ // todo: 2023/6/15 先进行初始化
|
|
|
+ caseClearPolygonByFeature(geom, object : iCompletion {
|
|
|
+ override fun onCompletion(result: ResultModel) {
|
|
|
+ if (result.isSuccess == false) {
|
|
|
+ if (callback != null) callback.onCompletion(result)
|
|
|
+ } else {
|
|
|
+ // todo: 2023/6/13 获取案件ID
|
|
|
+ val caseId = geom.attributes[FIELD_CASE_NAME]
|
|
|
+ // todo: 2023/6/15 先判断是否存在与该案件点名称相同的案件图斑 将其标志清除
|
|
|
+ var queryParameters = QueryParameters()
|
|
|
+ // todo: 2023/6/13 先进行空间查询 查询案件点对应的案件面
|
|
|
+ queryParameters.geometry = geom.geometry
|
|
|
+ queryParameters.spatialRelationship =
|
|
|
+ QueryParameters.SpatialRelationship.INTERSECTS
|
|
|
+ queryParameters.whereClause = "1=1"
|
|
|
+ var queryAsync = fTableCasePolygon!!.queryFeaturesAsync(queryParameters)
|
|
|
+ queryAsync?.addDoneListener(Runnable {
|
|
|
+ try {
|
|
|
+ if (queryAsync.isDone) {
|
|
|
+ var features = mutableListOf<Feature>()
|
|
|
+ for (fea in queryAsync.get()) {
|
|
|
+ fea.attributes[FIELD_CASE_POLYGON_ANJID] = caseId
|
|
|
+ fea.attributes[FIELD_CASE_POLYGON_BZ] =
|
|
|
+ FIELD_CASE_POLYGON_BZ_VALUE_YES
|
|
|
+ features.add(fea)
|
|
|
+ }
|
|
|
+ // todo: 2023/6/13 更新
|
|
|
+ var updateAsync = fTableCasePolygon!!.updateFeaturesAsync(features)
|
|
|
+ updateAsync?.addDoneListener(Runnable {
|
|
|
+ try {
|
|
|
+ if (updateAsync.isDone) {
|
|
|
+ // todo: 2023/6/13 更新完成
|
|
|
+ if (callback != null) callback.onCompletion(
|
|
|
+ ResultModel(
|
|
|
+ true,
|
|
|
+ "成功!"
|
|
|
+ )
|
|
|
+ )
|
|
|
+ }
|
|
|
+ } catch (ex: java.lang.IllegalArgumentException) {
|
|
|
+ if (callback != null) callback.onCompletion(
|
|
|
+ ResultModel(
|
|
|
+ false,
|
|
|
+ "案件对象更新失败!"
|
|
|
+ )
|
|
|
+ )
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ } catch (ex: java.lang.IllegalArgumentException) {
|
|
|
+ if (callback != null) callback.onCompletion(
|
|
|
+ ResultModel(
|
|
|
+ false,
|
|
|
+ "案件对象查询失败!"
|
|
|
+ )
|
|
|
+ )
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
- }catch (ex:java.lang.IllegalArgumentException){
|
|
|
- if(callback != null) callback.onCompletion(ResultModel(false,"案件对象查询失败!"))
|
|
|
}
|
|
|
})
|
|
|
}
|
|
@@ -1193,9 +1287,9 @@ class FragmentMap : CrAnimationFragment() {
|
|
|
* 删除案件点
|
|
|
* @param queryPoint Point 查询产靠位置
|
|
|
*/
|
|
|
- private fun caseRemoveCaseWaypoing(queryPoint:Point){
|
|
|
+ private fun caseRemoveCaseWaypoing(queryPoint: Point) {
|
|
|
// todo: 2023/6/14 创建缓冲区
|
|
|
- var queryGeometry = GeometryEngine.buffer(queryPoint,10.0)
|
|
|
+ var queryGeometry = GeometryEngine.buffer(queryPoint, 10.0)
|
|
|
// todo: 2023/6/14 设置查询参数
|
|
|
var queryParameters = QueryParameters()
|
|
|
queryParameters.spatialRelationship = QueryParameters.SpatialRelationship.CONTAINS
|
|
@@ -1203,29 +1297,29 @@ class FragmentMap : CrAnimationFragment() {
|
|
|
queryParameters.whereClause = "1=1"
|
|
|
// todo: 2023/6/14 开始查询
|
|
|
var identifyAsync = fTableMedia?.queryFeaturesAsync(queryParameters)
|
|
|
- identifyAsync?.addDoneListener(Runnable{
|
|
|
+ identifyAsync?.addDoneListener(Runnable {
|
|
|
try {
|
|
|
- if (identifyAsync.isDone){
|
|
|
+ if (identifyAsync.isDone) {
|
|
|
var queryFeatures = identifyAsync.get()
|
|
|
var features = mutableListOf<Feature>()
|
|
|
- for (fea in queryFeatures){
|
|
|
+ for (fea in queryFeatures) {
|
|
|
features.add(fea)
|
|
|
}
|
|
|
- if(features.size >0){
|
|
|
+ if (features.size > 0) {
|
|
|
var dig = DialogNormal(context!!)
|
|
|
dig.setTitle("提示")
|
|
|
dig.setMessage("删除后将无法恢复,确定删除吗?")
|
|
|
- dig.setButtonsText("删除","取消")
|
|
|
- dig.setListener(object :DialogNormal.DialogNormalListener{
|
|
|
+ dig.setButtonsText("删除", "取消")
|
|
|
+ dig.setListener(object : DialogNormal.DialogNormalListener {
|
|
|
// todo: 2023/6/14 确认删除
|
|
|
override fun completion() {
|
|
|
var deleteAsync = fTableMedia?.deleteFeaturesAsync(features)
|
|
|
deleteAsync?.addDoneListener(Runnable {
|
|
|
try {
|
|
|
- if(deleteAsync.isDone){
|
|
|
+ if (deleteAsync.isDone) {
|
|
|
showInformation("案件点删除成功!")
|
|
|
}
|
|
|
- }catch (ex:java.lang.IllegalArgumentException){
|
|
|
+ } catch (ex: java.lang.IllegalArgumentException) {
|
|
|
showError("案件点删除失败!")
|
|
|
}
|
|
|
})
|
|
@@ -1237,11 +1331,11 @@ class FragmentMap : CrAnimationFragment() {
|
|
|
|
|
|
})
|
|
|
dig.show()
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
showWarning("未查询到任何案件点!")
|
|
|
}
|
|
|
}
|
|
|
- }catch (ex:java.lang.IllegalArgumentException){
|
|
|
+ } catch (ex: java.lang.IllegalArgumentException) {
|
|
|
showError("查询错误,无法删除!")
|
|
|
}
|
|
|
})
|
|
@@ -1250,18 +1344,18 @@ class FragmentMap : CrAnimationFragment() {
|
|
|
/**
|
|
|
* 移动案件点
|
|
|
*/
|
|
|
- private fun caseMoveWaypoint(){
|
|
|
+ private fun caseMoveWaypoint() {
|
|
|
CrUtil.showMessage("选择需要移动的案件点!")
|
|
|
- mapTouch?.setAction(MapAction.MapTapMoveWaypoing)
|
|
|
+ mapTouch?.setAction(MapAction.MapTapStartMoveWaypoing)
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 选择移动的案件点
|
|
|
* @param location Point 点击位置
|
|
|
*/
|
|
|
- private fun caseMoveWaypointBySelect(location: Point){
|
|
|
+ private fun caseMoveWaypointBySelect(location: Point) {
|
|
|
// todo: 2023/6/14 设置查询区域
|
|
|
- var queryGeometry = GeometryEngine.buffer(location,10.0)
|
|
|
+ var queryGeometry = GeometryEngine.buffer(location, 10.0)
|
|
|
// todo: 2023/6/14 设置查询条件
|
|
|
var queryParameters = QueryParameters()
|
|
|
queryParameters.geometry = queryGeometry
|
|
@@ -1269,23 +1363,26 @@ class FragmentMap : CrAnimationFragment() {
|
|
|
queryParameters.whereClause = "1=1"
|
|
|
// todo: 2023/6/14 开始查询
|
|
|
var queryAsync = fTableMedia?.queryFeaturesAsync(queryParameters)
|
|
|
- queryAsync?.addDoneListener(Runnable{
|
|
|
+ queryAsync?.addDoneListener(Runnable {
|
|
|
try {
|
|
|
- if(queryAsync.isDone){
|
|
|
+ if (queryAsync.isDone) {
|
|
|
var features = mutableListOf<Feature>()
|
|
|
- for(fea in queryAsync.get()){
|
|
|
+ for (fea in queryAsync.get()) {
|
|
|
features.add(fea)
|
|
|
}
|
|
|
- if(features.size == 0){
|
|
|
+ if (features.size == 0) {
|
|
|
CrUtil.showMessage("未查询到任何违建点!")
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
fLayerMedia?.clearSelection()
|
|
|
fLayerMedia?.selectFeature(features[0])
|
|
|
CrUtil.showMessage("地图点击确定移动位置!")
|
|
|
- mapTouch?.setAction(MapAction.MapTapMovingWaypoint)
|
|
|
+ mapTouch?.setAction(MapAction.MapTapStopMoveWaypoint)
|
|
|
+ // todo: 2023/6/15 利用编辑工具
|
|
|
+ sketchEditor?.start(location)
|
|
|
+ sketchEditor?.addGeometryChangedListener(sketchGeometryChangeListener)
|
|
|
}
|
|
|
}
|
|
|
- }catch (ex:java.lang.IllegalArgumentException){
|
|
|
+ } catch (ex: java.lang.IllegalArgumentException) {
|
|
|
showError("案件点查询错误!")
|
|
|
}
|
|
|
})
|
|
@@ -1295,46 +1392,75 @@ class FragmentMap : CrAnimationFragment() {
|
|
|
* 案件点移动结束
|
|
|
* @param location Point 移动后位置
|
|
|
*/
|
|
|
- private fun caseMoveWaypointToEnd(location: Point){
|
|
|
+ private fun caseMoveWaypointToEnd(location: Point) {
|
|
|
var asyncSelected = fLayerMedia?.selectedFeaturesAsync
|
|
|
asyncSelected?.addDoneListener(Runnable {
|
|
|
try {
|
|
|
- if(asyncSelected.isDone){
|
|
|
- var features = mutableListOf<Feature>()
|
|
|
- for(fea in asyncSelected.get()){
|
|
|
+ if (asyncSelected.isDone) {
|
|
|
+ var features = mutableListOf<Feature>()
|
|
|
+ for (fea in asyncSelected.get()) {
|
|
|
features.add(fea)
|
|
|
}
|
|
|
- if(features.size == 0){
|
|
|
+ if (features.size == 0) {
|
|
|
showError("未获取到可移动违建点,无法完成移动操作!")
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
features[0].geometry = location
|
|
|
var asyncUpdate = fTableMedia?.updateFeatureAsync(features[0])
|
|
|
- asyncUpdate?.addDoneListener(Runnable{
|
|
|
+ asyncUpdate?.addDoneListener(Runnable {
|
|
|
try {
|
|
|
- if (asyncUpdate.isDone){
|
|
|
- caseUpdatePolygonByFeature(features[0],true,object:iCompletion{
|
|
|
+ if (asyncUpdate.isDone) {
|
|
|
+ caseUpdatePolygonByFeature(features[0], object : iCompletion {
|
|
|
override fun onCompletion(result: ResultModel) {
|
|
|
- if(result.isSuccess == true){
|
|
|
+ if (result.isSuccess == true) {
|
|
|
CrUtil.showMessage("移动完成!")
|
|
|
- }else{
|
|
|
+ sketchEditor?.removeGeometryChangedListener(
|
|
|
+ sketchGeometryChangeListener
|
|
|
+ )
|
|
|
+ sketchEditor?.stop()
|
|
|
+ fLayerMedia?.clearSelection()
|
|
|
+ } else {
|
|
|
showError(result.message!!)
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
- }catch (ex:java.lang.IllegalArgumentException){
|
|
|
+ } catch (ex: java.lang.IllegalArgumentException) {
|
|
|
showError("移动错误,无法完成移动操作!")
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
- }catch (ex:java.lang.IllegalArgumentException){
|
|
|
+ } catch (ex: java.lang.IllegalArgumentException) {
|
|
|
showError("获取可移动违建点错误,无法完成移动操作!")
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * 案件分享及上传选择执行
|
|
|
+ * @param screenPoint Point 屏幕点
|
|
|
+ */
|
|
|
+ private fun caseUpload(screenPoint: android.graphics.Point) {
|
|
|
+ // todo: 2023/6/15 查询
|
|
|
+ var asyncQuery = map_mapView?.identifyLayerAsync(fLayerMedia, screenPoint, 6.0, false)
|
|
|
+ asyncQuery?.addDoneListener(Runnable {
|
|
|
+ try {
|
|
|
+ if (asyncQuery.isDone) {
|
|
|
+ var elements = asyncQuery.get().elements
|
|
|
+ if (elements.size <= 0) {
|
|
|
+ CrUtil.showMessage("未选择上传案件!")
|
|
|
+ } else {
|
|
|
+ fLayerMedia?.selectFeature(elements.last() as Feature)
|
|
|
+ if(eventListener != null) eventListener?.onCaseUpdate(CaseModel(elements.last().attributes))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (ex: java.lang.IllegalArgumentException) {
|
|
|
+ showError("案件查询错误!")
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* 显示警告信息
|
|
|
* @param warning String 警告消息
|
|
|
*/
|
|
@@ -1484,26 +1610,39 @@ class FragmentMap : CrAnimationFragment() {
|
|
|
caseSave()
|
|
|
}
|
|
|
// todo: 2023/6/12 删除保存的图斑
|
|
|
- MapAction.EventCaseRemovePolygon->{
|
|
|
+ MapAction.EventCaseRemovePolygon -> {
|
|
|
caseDelete()
|
|
|
}
|
|
|
// todo: 2023/6/12 地图点击添加违建点
|
|
|
- MapAction.MapTapAddWaypoint->{
|
|
|
+ MapAction.MapTapAddWaypoint -> {
|
|
|
CrUtil.showMessage("地图上点击添加案件点!")
|
|
|
mapTouch?.setAction(MapAction.MapTapAddWaypoint)
|
|
|
}
|
|
|
// todo: 2023/6/13 删除案件点
|
|
|
- MapAction.MapTapDeleteWaypoint->{
|
|
|
+ MapAction.MapTapDeleteWaypoint -> {
|
|
|
CrUtil.showMessage("地图上选择需要删除的违建点后删除!")
|
|
|
mapTouch?.setAction(MapAction.MapTapDeleteWaypoint)
|
|
|
}
|
|
|
// todo: 2023/6/14 移动案件点
|
|
|
- MapAction.MapTapMoveWaypoing->{
|
|
|
+ MapAction.MapTapStartMoveWaypoing -> {
|
|
|
caseMoveWaypoint()
|
|
|
}
|
|
|
+ // todo: 2023/6/15 案件分享及上传
|
|
|
+ MapAction.MapTapCaseWxAndUpload -> {
|
|
|
+ CrUtil.showMessage("地图上选择需要上传或分享的案件!")
|
|
|
+ mapTouch?.setAction(MapAction.MapTapCaseWxAndUpload)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 设置事件监听
|
|
|
+ * @param listener EventListener 事件监听
|
|
|
+ */
|
|
|
+ fun crSetEventListener(listener: EventListener) {
|
|
|
+ this.eventListener = listener
|
|
|
+ }
|
|
|
+
|
|
|
// todo: 2023/4/17 生命周期
|
|
|
override fun onDestroy() {
|
|
|
// todo: 2023/4/17 移除订阅监听
|