Administrator 2 jaren geleden
bovenliggende
commit
84404b81aa

+ 4 - 10
src/main/java/com/sysu/admin/api/crop/ApiCropController.java

@@ -10,7 +10,6 @@ import com.sysu.admin.controller.crop.images.CropImageService;
 import com.sysu.admin.controller.crop.images.ImageType;
 import com.sysu.admin.support.base.BaseComponent;
 import com.sysu.admin.support.shiro.ShiroService;
-import com.sysu.admin.support.system.config.ConfigContext;
 import com.sysu.admin.support.system.config.SConfigService;
 import com.sysu.admin.utils.shape.GeoCastUtil;
 import com.xiesx.fastboot.base.result.BaseResult;
@@ -26,10 +25,8 @@ import org.springframework.web.bind.annotation.*;
 import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Paths;
-import java.nio.file.StandardOpenOption;
-import java.util.Arrays;
+import java.util.Date;
 import java.util.List;
-import java.util.stream.Collectors;
 
 @RequestMapping("/api/crop")
 @RestController
@@ -89,14 +86,10 @@ public class ApiCropController extends BaseComponent {
     }
 
     @RequestMapping("/list")
-    public BaseResult list(@RequestBody String data) throws FactoryException, TransformException {
+    public BaseResult list(@RequestBody String data){
         CropVo vo = JSON.parseObject(data, CropVo.class);
         List<CropLand> cityLandList = null;
-        cityLandList = cityLandService.findByExecutor(testId);
-        List<CropImage> cropImages = cropImageService.findSimpleByCropIds(cityLandList.stream().map(CropLand::getId).collect(Collectors.toList()));
-        setImages(cityLandList, cropImages);
-        cityLandList.stream().forEach(cityLand -> {
-        });
+        cityLandList = cityLandService.findIdAndNameByExecutor(testId);
         return R.succ(cityLandList);
     }
 
@@ -113,6 +106,7 @@ public class ApiCropController extends BaseComponent {
         CropLand bean = cityLandService.findOne(vo.getId());
         BeanUtils.copyProperties(vo, bean, CopyUtils.nullNames(vo));
         bean.setExecutor(testId);
+        bean.setUpdateDate(new Date());
         cityLandService.saveCropAndImages(bean);
         return R.succ();
     }

+ 2 - 0
src/main/java/com/sysu/admin/api/crop/CropVo.java

@@ -34,5 +34,7 @@ public class CropVo {
     @NotNull(message = "采集时间为空!")
     private Date pickDate;
     private String desc;
+    private String name;
+    private String address;
 
 }

+ 4 - 0
src/main/java/com/sysu/admin/controller/MainController.java

@@ -5,6 +5,7 @@ import java.util.List;
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 
+import com.alibaba.fastjson.JSON;
 import com.sysu.admin.support.shiro.ShiroToken;
 import com.sysu.admin.support.system.menu.SMenuService;
 import com.sysu.admin.support.system.role.SRoleRepository;
@@ -185,11 +186,14 @@ public class MainController extends ServiceContext {
         servletContext.setAttribute("geoserver", mGeoServerConfig.getText());
 
         User user = mShiroService.getCurrentUser();
+        model.addAttribute("cropTypes", JSON.toJSONString(mCropItemService.findAll()));
+        model.addAttribute("cropPeriods", JSON.toJSONString(mCropPeriodService.findAll()));
         model.addAttribute("user", user);
         model.addAttribute("roles", mSRoleRepository.findAll());
         model.addAttribute("userRoles", mUserRoleRepository.getRoleByUsers(mShiroService.getCurrentUserId()));// 这里用户对角色1v1
         model.addAttribute("organ", mOrganService.findOne(user.getOrganId()));
 
+
         return "comm/admin2";
     }
 

+ 11 - 2
src/main/java/com/sysu/admin/controller/crop/CropLandService.java

@@ -1,6 +1,10 @@
 package com.sysu.admin.controller.crop;
 
 import com.mysql.jdbc.StringUtils;
+import com.querydsl.core.types.Projections;
+import com.querydsl.core.types.QBean;
+import com.querydsl.core.types.QList;
+import com.querydsl.jpa.impl.JPAQuery;
 import com.sysu.admin.controller.city.*;
 import com.sysu.admin.controller.crop.images.CropImage;
 import com.sysu.admin.controller.crop.images.CropImageService;
@@ -8,6 +12,7 @@ import com.sysu.admin.controller.crop.images.ImageType;
 import com.sysu.admin.controller.geo.land.LandTaskStatus;
 import com.sysu.admin.support.base.BaseService;
 import com.sysu.admin.support.system.config.ConfigContext;
+import com.sysu.admin.support.system.user.User;
 import com.sysu.admin.utils.file.FileUtil;
 import com.sysu.admin.utils.shape.GeoCastUtil;
 import com.xiesx.fastboot.base.result.BaseResult;
@@ -49,9 +54,13 @@ public class CropLandService extends BaseService<CropLand, Long> {
         });
     }
 
-    public List<CropLand> findByExecutor(Long executor){
+    public List<CropLand> findIdAndNameByExecutor(Long executor){
         QCropLand qCropLand = QCropLand.cropLand;
-        return mCropLandRepository.findAll(qCropLand.executor.eq(executor));
+        QBean<CropLand> selectBean = Projections.fields(qCropLand, qCropLand.id, qCropLand.name);
+        JPAQuery<CropLand> jpaQuery = mJPAQueryFactory.select(selectBean)
+                .from(qCropLand)
+                .where(qCropLand.executor.eq(executor));
+        return jpaQuery.fetch();
     }
 
     public CropLand findByPoint(Double[] point){

+ 2 - 0
src/main/java/com/sysu/admin/controller/crop/CropLandVo.java

@@ -61,6 +61,8 @@ public class CropLandVo{
     private Integer provinceId;
     private Integer cityId;
     private Integer districtId;
+    private String name;
+    private String address;
 
 
 

+ 21 - 0
src/main/java/com/sysu/admin/controller/crop/class_item/CropItemService.java

@@ -0,0 +1,21 @@
+package com.sysu.admin.controller.crop.class_item;
+
+import com.sysu.admin.support.base.BaseService;
+import com.xiesx.fastboot.base.result.BaseResult;
+import com.xiesx.fastboot.base.result.R;
+import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@Service
+public class CropItemService extends BaseService<CropClassItem, Integer> {
+
+
+    @Override
+    public JpaPlusRepository<CropClassItem, Integer> r() {
+        return mCropClassItemRepository;
+    }
+}

+ 51 - 0
src/main/java/com/sysu/admin/controller/crop/images/CropImageController.java

@@ -0,0 +1,51 @@
+package com.sysu.admin.controller.crop.images;
+
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.sysu.admin.support.system.config.ConfigContext;
+import com.xiesx.fastboot.core.jpa.entity.JpaPlusEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+import lombok.experimental.FieldNameConstants;
+import org.hibernate.annotations.DynamicInsert;
+import org.hibernate.annotations.DynamicUpdate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.annotation.CreatedDate;
+import org.springframework.data.jpa.domain.support.AuditingEntityListener;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import javax.persistence.*;
+import java.util.Date;
+import java.util.List;
+
+@Controller
+@RequestMapping("/crop_image")
+public class CropImageController {
+
+    @Autowired
+    CropImageService cropImageService;
+
+    @RequestMapping("/view")
+    public String view(Long id, Model model){
+        List<CropImage> cropImageList = cropImageService.findByCropId(id);
+        cropImageList.stream().forEach(cropImage -> {
+            switch (CropImage.getImageType(cropImage.getType())){
+                case fay:
+                    model.addAttribute("fay",cropImage);
+                    break;
+                case center:
+                    model.addAttribute("center",cropImage);
+                    break;
+                case near:
+                    model.addAttribute("near",cropImage);
+                    break;
+            }
+        });
+        return "page/crop-image/view";
+    }
+
+
+}

+ 17 - 0
src/main/java/com/sysu/admin/controller/crop/period/CropPeriodService.java

@@ -0,0 +1,17 @@
+package com.sysu.admin.controller.crop.period;
+
+import com.sysu.admin.controller.crop.class_item.CropClassItem;
+import com.sysu.admin.support.base.BaseService;
+import com.xiesx.fastboot.core.jpa.JpaPlusRepository;
+import org.springframework.stereotype.Service;
+
+
+@Service
+public class CropPeriodService extends BaseService<CropPeriod, Integer> {
+
+
+    @Override
+    public JpaPlusRepository<CropPeriod, Integer> r() {
+        return mCropPeriodRepository;
+    }
+}

+ 7 - 0
src/main/java/com/sysu/admin/support/base/RepositoryContext.java

@@ -3,7 +3,9 @@ package com.sysu.admin.support.base;
 
 import com.sysu.admin.controller.crop.CropLandRepository;
 import com.sysu.admin.controller.crop.CropPointRepository;
+import com.sysu.admin.controller.crop.class_item.CropClassItemRepository;
 import com.sysu.admin.controller.crop.images.CropImageRepository;
+import com.sysu.admin.controller.crop.period.CropPeriodRepository;
 import com.sysu.admin.controller.geo.qyz.QyzRepository;
 import com.sysu.admin.support.system.user_role.UserRoleRepository;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -42,5 +44,10 @@ public class RepositoryContext extends BaseComponent{
     public CropPointRepository mCropPointRepository;
     @Autowired
     public CropImageRepository mCropImageRepository;
+    @Autowired
+    public CropClassItemRepository mCropClassItemRepository;
+    @Autowired
+    public CropPeriodRepository  mCropPeriodRepository;
+
 
 }

+ 11 - 0
src/main/java/com/sysu/admin/support/base/ServiceContext.java

@@ -3,6 +3,9 @@ package com.sysu.admin.support.base;
 import com.querydsl.core.types.ExpressionUtils;
 import com.querydsl.core.types.Predicate;
 import com.querydsl.core.types.dsl.DateTimePath;
+import com.sysu.admin.controller.crop.class_item.CropClassItem;
+import com.sysu.admin.controller.crop.class_item.CropItemService;
+import com.sysu.admin.controller.crop.period.CropPeriodService;
 import com.sysu.admin.support.system.organ.OrganService;
 import com.sysu.admin.support.shiro.ShiroService;
 import com.sysu.admin.support.system.config.SConfigService;
@@ -48,6 +51,14 @@ public class ServiceContext {
     @Autowired
     public SConfigService mSConfigService;
 
+    @Lazy
+    @Autowired
+    public CropItemService mCropItemService;
+
+    @Lazy
+    @Autowired
+    public CropPeriodService mCropPeriodService;
+
     /**
      * 构造日期条件
      * @param predicate 条件对象

+ 15 - 6
src/main/webapp/WEB-INF/jsp/comm/admin2.jsp

@@ -47,6 +47,15 @@
             var wmtsData = {'vector_wmts':${vector_wmts},'img_wmts':${img_wmts},'qyz':${qyz},'qysdcj':${qysdcj},'ext1':${ext1 == "" ? "{}" : ext1}
                 ,'ext2':${ext2 == "" ? "{}" : ext2}
             }
+            var cropTypes = {}
+            for(let cropType of ${cropTypes}){
+                cropTypes[cropType.id] = cropType.name
+            }
+            let cropPeriods = {}
+            for(let cropPeriod of ${cropPeriods}){
+                cropPeriods[cropPeriod.id] = cropPeriod.name
+            }
+            console.log(cropTypes)
             var map,view1,tool,overLay;
             var gjson = new ol.format.GeoJSON()
 
@@ -62,7 +71,7 @@
                 view1 = new ol.View({
                     center: [113.37966949,23.06685869],
                     projection: projection,
-                    zoom: 14
+                    zoom: 15
                 })
 
                 map = new ol.Map({
@@ -145,11 +154,11 @@
                     <%--{ id:23, pId:2, name:"油菜",icon :"${base}/static/images/tree-point.png"},--%>
                     <%--{ id:24, pId:2, name:"玉米",icon :"${base}/static/images/tree-point.png"},--%>
                     <%--{ id:25, pId:2, name:"柑橘",icon :"${base}/static/images/tree-point.png"},--%>
-                    { id:3, pId:0,  name:"任务管理",icon :"${base}/static/images/cloudy20x20.png",open:true},
-                    { id:31, pId:3, status:1, name:"已发布的",icon :"${base}/static/images/cloudy20x20.png", Action:TaskLandAction},
-                    { id:32, pId:3, status:2, name:"已接受的",icon :"${base}/static/images/cloudy20x20.png", Action:TaskLandAction},
-                    { id:33, pId:3, status:3, name:"已完成的",icon :"${base}/static/images/cloudy20x20.png", Action:TaskLandAction},
-                    { id:34, pId:3, name:"批量发布",icon :"${base}/static/images/cloudy20x20.png", Action: PublishTaskAction},
+                    <%--{ id:3, pId:0,  name:"任务管理",icon :"${base}/static/images/cloudy20x20.png",open:true},--%>
+                    <%--{ id:31, pId:3, status:1, name:"已发布的",icon :"${base}/static/images/cloudy20x20.png", Action:TaskLandAction},--%>
+                    <%--{ id:32, pId:3, status:2, name:"已接受的",icon :"${base}/static/images/cloudy20x20.png", Action:TaskLandAction},--%>
+                    <%--{ id:33, pId:3, status:3, name:"已完成的",icon :"${base}/static/images/cloudy20x20.png", Action:TaskLandAction},--%>
+                    { id:34, pId:0, name:"批量发布",icon :"${base}/static/images/cloudy20x20.png", Action: PublishTaskAction},
                     <%--{ id:4, pId:0, name:"产量预估",icon :"${base}/static/images/cloudy20x20.png"},--%>
                     <%--{ id:5, pId:0, name:"农业灾害风险",icon :"${base}/static/images/cloudy20x20.png"},--%>
                     <%--{ id:6, pId:0, name:"土壤要素",icon :"${base}/static/images/cloudy20x20.png"},--%>

+ 41 - 0
src/main/webapp/WEB-INF/jsp/page/crop-image/view.jsp

@@ -0,0 +1,41 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8" trimDirectiveWhitespaces="true"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/fastboot" prefix="fb"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
+<fb:ui src="base/main2">
+    <fb:property name="title"></fb:property>
+    <fb:layout>
+        <style>
+            h1{
+                width: 100%;
+                text-align: center;
+                color: black;
+            }
+            div{
+                padding: 10px;
+            }
+        </style>
+        <div>
+            <div>
+                <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
+                    <legend>远景</legend>
+                </fieldset>
+                <img src="${fay.url}" width="100%" />
+            </div>
+            <div>
+                <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
+                    <legend>中景</legend>
+                </fieldset>
+                <img src="${center.url}" width="100%" />
+            </div>
+            <div>
+                <fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
+                    <legend>近景</legend>
+                </fieldset>
+                <img src="${near.url}" width="100%" />
+            </div>
+        </div>
+    </fb:layout>
+</fb:ui>
+
+
+

+ 1 - 1
src/main/webapp/static/css/admin2.css

@@ -275,7 +275,7 @@
 .ol-popup {
     display: none;
     position: absolute;
-    background-color: #147ae850;
+    background-color: rgba(5, 64, 127, 0.7);
     -moz-box-shadow: 0 1px 4px rgba(0,0,0,0.2);
     -webkit-filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2));
     filter: drop-shadow(0 1px 4px rgba(0,0,0,0.2));

+ 2 - 3
src/main/webapp/static/js/adm/adm_tool.js

@@ -358,9 +358,7 @@ layui.define([ 'layer', 'table', 'form', 'element', 'notice' ], function(exports
 				type : 2,
 				title : title ? title : false,
 				content : [ url ],
-				shade : 0.6,
 				resize : true,
-				area : [ '64%', h ],
 				closeBtn : 2,
 				anim : 0,
 				isOutAnim : false,
@@ -369,7 +367,8 @@ layui.define([ 'layer', 'table', 'form', 'element', 'notice' ], function(exports
 
 			if(cfg){
 				if(cfg.area){
-					options.area = cfg.area
+					options.area = cfg.area || [ '64%', h ]
+					options.shade = cfg.shade || 0.6
 				}
 			}
 

+ 52 - 39
src/main/webapp/static/package/cityland.js

@@ -21,11 +21,10 @@ CityLandAction.prototype = {
 
         this.popup = new Popup({map: this.context.currentMap,
             close(){
-                that.tempVectorLayer.getSource().clear()
                 that.clickLock = false
             },
             buttons:[
-                {"name":"发布任务","click":"pubTask"},{"name":"放大到合适","click":"fit"}
+                {"name":"发布任务","click":"pubTask"},{"name":"放","click":"fit"}
             ],
             listener: {
                 info(){
@@ -46,7 +45,7 @@ CityLandAction.prototype = {
             console.log("startStatus is true")
             return
         }
-        this.context.clicks[this.id] = this
+        // this.context.clicks[this.id] = this
         this.drawMultiPolygon.show()
         this.context.currentMap.addLayer(this.obj.layerData.layer)
         this.context.getSldStyleSign(this.obj.wmsData.params.STYLE)
@@ -121,32 +120,22 @@ CityLandAction.prototype = {
         let source = this.tempVectorLayer.getSource();
         source.addFeature(point)
     },
-    // addFieldPoint(f){
-    //     let centerPoint = f.get("center_point")
-    //     let point = new ol.Feature({
-    //         geometry: new ol.geom.Point(extent)
-    //     });
-    //     point.set("isPoint",1)
-    //     point.setId(cityLand.id)
-    //     point.set("status",cityLand.status)
-    //     let source = this.tempVectorLayer.getSource();
-    //     source.addFeature(point)
-    // },
-    selectedCountry(f){
-        let stroke = new ol.style.Stroke({
-            color: 'rgba(200,20,20,0.8)',
-            width: 2,
-        })
-        let fill = new ol.style.Fill({
-            color: 'rgba(200,20,20,0.4)',
-        })
-        const style1 = new ol.style.Style({
-            stroke: stroke,
-            fill: fill
+    newFieldPoint(f){
+        let centerPoint = f.get("center_point")
+        let point = new ol.Feature({
+            geometry: new ol.geom.Point(centerPoint.coordinates)
         });
-        return f.get("isPoint") ? globalStyle.pointStyle(f) : style1
+        for(let key of f.getKeys()){
+            if(key != "geometry"){
+                point.set(key,f.get(key))
+            }
+        }
+        point.set("isPoint",1)
+        point.setId(f.getId().substring(f.getId().indexOf(".") + 1))
+        return point;
     }
     ,loadTempVectorLayer(){
+        let that = this
         let map = this.context.currentMap
         let baseUrl = this.context.local_wfs_path
         const vectorSource = new ol.source.Vector({
@@ -168,6 +157,13 @@ CityLandAction.prototype = {
                     if (xhr.status == 200) {
                         const features = vectorSource.getFormat().readFeatures(xhr.responseText);
                         vectorSource.addFeatures(features);
+                        for(let feature of features){
+                            feature.set("id",feature.getId().substring(feature.getId().indexOf(".") + 1))
+                            let area = feature.getGeometry().getArea()
+                            area = (area + area / 2) / 1000
+                            feature.set("area", area.toFixed(2));
+                            vectorSource.addFeature(that.newFieldPoint(feature))
+                        }
                         success(features);
                     } else {
                         onError();
@@ -178,36 +174,53 @@ CityLandAction.prototype = {
             strategy: ol.loadingstrategy.bbox,
         });
 
-        return new ol.layer.Vector({
+        let vector = new ol.layer.Vector({
             map: map,
             source:vectorSource,
-            style: this.selectedCountry,
-            minZoom:15,
+            style: globalStyle.cropStyle,
+            minZoom:13,
             maxZoom:20
         });
-    },
-    landType:{
-        0:"其他",
-        1:"湿地",
-        2:"耕地",
-        3:"种植",
-        4:"林地",
-        5:"草地",
-        6:"水域",
+
+        that.select = new ol.interaction.Select({
+            condition: ol.events.condition.singleClick,
+            layers:[vector],
+            style: globalStyle.selectedCropStyle
+        })
+        map.addInteraction(that.select)
+        that.select.on("select",function(e){
+            if(e.selected.length > 0){
+                console.log(e.selected[0].get("center_point").coordinates)
+                that.popup.show(e.selected[0].get("center_point").coordinates, that.getInfoHtml(e.selected[0]), e.selected[0])
+            }
+        })
+        return vector;
     },getInfoHtml(feature){
         let html = ""
+        console.log(feature.getKeys())
         let data = {
             "地块类别":this.landType[feature.get("gridcode")],
+            "名称":feature.get("name"),
+            "地址":feature.get("address"),
+            "作物":cropTypes[feature.get("crop_type")],
             "地块图斑编号":feature.get("id"),
+            "地块状态":this.taskStatus[feature.get("status")],
             "地块面积(亩)":feature.get("area"),
-            "地块周长(米)":"10000",
+            "生长期":cropPeriods[feature.get("growing_period")],
+            "图片信息":"<a style='color: whitesmoke;' href='javascript:layui.tool.open(!,!,!,!)'>点击查看</a>"
+                .format('"/crop_image/view?id='+feature.get("id")+'"','"60%"','"图片信息"','{area:["90%","90%"],shade:0.1}'),
         }
         for(let key in data){
+            console.log(data[key])
             html += "<div class='layui-row'><div class='lab' >"+key+"</div><div class='val' >"+data[key]+"</div></div>"
         }
         return html
     },
+    taskStatus:["未发布","已发布","已领取","已完成"],
+    landType:{0:"其他", 1:"湿地", 2:"耕地", 3:"种植", 4:"林地", 5:"草地", 6:"水域"}
+    ,
     saveTask(that, feature){
+        console.log(feature.getKeys())
         layui.tool.submit("/crop/publish",{"id":feature.get("id")},function(res){
             if(res.code == 0){
                 that.addFieldPointOfTempLayer(res.data)

+ 11 - 0
src/main/webapp/static/package/geo_server_context.js

@@ -126,6 +126,17 @@ function TipLayer(option){
 }
 
 
+String.prototype.format = function(){
+    let str = this;
+    if(arguments.length == 0){
+        return str;
+    }else{
+        Object.keys(arguments).forEach((item,index)=>{
+            str = str.replace(/\!/,arguments[item])
+        })
+        return str
+    }
+}
 
 
 

+ 28 - 5
src/main/webapp/static/package/style.js

@@ -9,9 +9,9 @@ let globalStyle = {
     },
     pointStyle(f){
         let colors = ['rgb(7,31,250)','rgb(7,31,250)','rgb(250,189,7)','rgb(7,250,11)']
-        return new ol.style.Style({
-            text:new ol.style.Text({
-                text:f.getId(),
+        let style = new ol.style.Style({
+            text: new ol.style.Text({
+                text:f.getId() ? f.getId() : f.get("id"),
                 stroke: new ol.style.Stroke({
                     color: 'rgba(239,236,236)',
                     width: 1,
@@ -19,12 +19,12 @@ let globalStyle = {
                 fill: new ol.style.Fill({
                     color: 'rgba(239,236,236)',
                 }),
-                font:"16px sans-serif"
+                font:"14px sans-serif"
             }),
             image: new ol.style.RegularShape({
                 stroke: new ol.style.Stroke({
                     color: colors[f.get('status')],
-                    width: 2,
+                    width: 1,
                 }),
                 fill: new ol.style.Fill({
                     color: colors[f.get('status')],
@@ -34,6 +34,29 @@ let globalStyle = {
                 angle: 0
             })
         });
+        return style
+    },
+    cropStyle(f){
+        if(f.get("isPoint")){
+            return globalStyle.pointStyle(f)
+        }
+        const fill = new ol.style.Fill({
+            color: 'rgba(255,255,255,0.1)',
+        });
+        return new ol.style.Style({
+            fill:fill
+        });
+    },selectedCropStyle(f){
+        if(f.get("isPoint")){
+            return globalStyle.pointStyle(f)
+        }
+        const stroke = new ol.style.Stroke({
+            color: 'rgb(10,241,23)',
+            width: 2
+        });
+        return new ol.style.Style({
+            stroke:stroke
+        });
     }
 
 }