mapTools.vue 4.05 KB
<template>
    <div class="tools">
      <el-button-group>
        <el-button type="primary" title="全图" icon="iconfont iconquantu" @click="fullMap"></el-button>
        <el-button type="primary" title="测面" icon="iconfont iconcemianji" @click="measureMent('area')"></el-button>
        <el-button type="primary" title="测距" icon="iconfont iconceju" @click="measureMent('distance')"></el-button>
         <el-button type="primary" title="放大" icon="iconfont iconlakuangfangda" @click="zoomOut"></el-button>
        <el-button type="primary" title="缩小" icon="iconfont iconlakuangsuoxiao" @click="zoomIn"></el-button>
        <el-button type="primary" title="点选" icon="iconfont iconchaxunshuxing" @click="info"></el-button>
          <el-button type="primary" title="缓冲区分析" icon="iconfont iconqingchu" @click="bufferAnalysis"></el-button>
        <el-button type="primary" title="清除" icon="iconfont iconqingchu" @click="clear"></el-button>
      </el-button-group>

    </div>
</template>
<script>
import {maps} from '@/libs/map/mapUtils'
import draw from '@/libs/map/draw'
import identifyUtils from '@/libs/map/IdentifyUtils'
import measure from '@/libs/map/measure'

import {loadModules} from "esri-loader"
export default {
    props:{
        viewId:{
            type:String,
            default:"mainView"
        }
    },
    mixins:[draw,identifyUtils,measure],
    data(){
        return{
            url:"http://192.168.2.201:6080/arcgis/rest/services/%E4%BA%92%E8%81%94%E7%BD%91%E5%8A%A0%E4%B8%8D%E5%8A%A8%E4%BA%A7/XA_%E4%B8%8D%E5%8A%A8%E4%BA%A7/MapServer",
            selectResLayerId:"",
            features:[],
            resultLayers:[],
            results:[]
        }
    },
    methods:{
        fullMap(){
            var view = maps[this.viewId];
            view.zoom = 10;
            view.center = [108.95,34.27]
        },
        measureMent(type){
            this.measure(this.viewId,type);
        },
        clearHeightLayer(){
            
        },
        clear(){
            this.measure(this.viewId,null);
        },
        info(){
             var view = maps[this.viewId];
             var self = this;
            this.initDraw("point",this.viewId,null,function(geo){
                self.identify(self.url,[8,10],geo,function(res){
                    var resultes = res.results;
                    if(resultes && resultes.length > 0){
                        self.$parent.delIdentifyData(resultes);
                        self.$parent.dialogVisible = true;
                    }
                },true,'all',3,view.extent);
            });
        },

        zoomOut(){
            var view = maps[this.viewId];
          this.initDraw("rectangle",this.viewId,null,function(geo){
            view.extent = geo.extent;
          });
        },
        zoomIn(){
            var view = maps[this.viewId];
          this.initDraw("rectangle",this.viewId,null,function(geo){
            var  dWidth, dHeight, dXmin, dYmin, dXmax, dYmax;
            dWidth = view.extent.width * view.extent.width / geo.extent.width;
            dHeight = view.extent.height * view.extent.height / geo.extent.height;
            dXmin = view.extent.xmin - ((geo.extent.xmin - view.extent.xmin) * view.extent.width / geo.extent.width);
            dYmin = view.extent.ymin - ((geo.extent.ymin - view.extent.ymin) * view.extent.height / geo.extent.height);
            dXmax = dXmin + dWidth;
            dYmax = dYmin + dHeight;
            //pEnv.PutCoords(dXmin, dYmin, dXmax, dYmax);
            loadModules(["esri/geometry/Extent"]).then(([Extent]) => {
              view.extent = new Extent({
                xmin: dXmin,
                ymin: dYmin,
                xmax: dXmax,
                ymax: dYmax,
                spatialReference: {
                  wkid: 102100
                }
              });
            }).catch( err => {
              throw (err);
            })
          });
        },
        //缓冲区分析
        bufferAnalysis(){

        }

    }

    
}
</script>
<style lang="less" scoped>
    .tools{
        position: relative;
    }

</style>