|  | @@ -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 移除订阅监听
 |