<template>
|
<Popup
|
ref="pop"
|
:title="title"
|
:shadow="!isEdit"
|
:left="left"
|
width="390px"
|
@close="close(true)"
|
showBtn="true"
|
@yes="addData"
|
@cancel="close(false)"
|
>
|
<el-form ref="form" :model="data" :rules="rules" label-width="105px">
|
<el-form-item label="名称:">
|
<el-input v-model="data.name"></el-input>
|
</el-form-item>
|
<el-form-item label="地址:" prop="urls">
|
<el-input
|
v-model="data.urls"
|
:title="data.urls"
|
:disabled="isEdit"
|
></el-input>
|
</el-form-item>
|
<el-form-item label="数据类型:">
|
<el-select v-model="data.class" :disabled="isEdit">
|
<el-option label="点" value="point"></el-option>
|
<el-option label="线" value="polyline"></el-option>
|
<el-option label="面" value="polygon"></el-option>
|
<el-option label="管线" value="polylineVolume"></el-option>
|
<el-option label="模型点" value="model"></el-option>
|
</el-select>
|
</el-form-item>
|
<div v-if="point">
|
<el-form-item label="样式类型:" v-if="!polygonLabel">
|
<el-select
|
v-model="pointType"
|
@change="edit('pointType')"
|
:disabled="isEdit"
|
>
|
<el-option label="文本" value="label"></el-option>
|
<el-option label="图标" value="billboard"></el-option>
|
<el-option label="文本+图标" value="labelBillboard"></el-option>
|
</el-select>
|
</el-form-item>
|
<div v-if="showLable">
|
<el-form-item v-if="fields.length" label="文本内容:" prop="text">
|
<el-select
|
v-model="data.text"
|
placeholder="请选择字段名"
|
@change="edit('text')"
|
>
|
<el-option
|
v-for="field in fields"
|
:key="field"
|
:label="field"
|
:value="`[${field}]`"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item v-else label="文本内容:" prop="text">
|
<el-input
|
placeholder="请输入内容"
|
v-model="data.text"
|
@change="edit('text')"
|
>
|
<template slot="append">
|
<el-button @click="confirmAddress">获取字段</el-button>
|
</template>
|
</el-input>
|
</el-form-item>
|
<el-form-item v-if="showLable" label="文本大小:">
|
<el-input
|
v-model="data.point.size"
|
@change="edit('size')"
|
></el-input>
|
</el-form-item>
|
<el-form-item v-if="showLable" label="字体样式:">
|
<el-select
|
v-model="data.point.font_family"
|
placeholder="请选择字体"
|
@change="edit('font_family')"
|
style="width: 133px"
|
>
|
<el-option
|
v-for="font in fonts"
|
:key="font.value"
|
:label="font.name"
|
:value="font.value"
|
>
|
</el-option>
|
</el-select>
|
<el-checkbox-group
|
v-model="fontStyle"
|
style="
|
display: inline-block;
|
margin-left: 6px;
|
position: absolute;
|
"
|
@change="edit('fontStyle')"
|
>
|
<el-checkbox-button label="bold"
|
><div class="bold minBtn"></div
|
></el-checkbox-button>
|
<el-checkbox-button label="italic"
|
><div class="italic minBtn"></div
|
></el-checkbox-button>
|
</el-checkbox-group>
|
</el-form-item>
|
<el-form-item v-if="!polygonLabel" label="边框宽度:">
|
<el-input-number
|
:min="0"
|
:max="6"
|
v-model="data.point.outlineWidth"
|
@change="edit('outlineWidth')"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item v-if="polygonLabel" label="最小可视:">
|
<el-input-number
|
:min="0"
|
v-model="data.polygon.labelNear"
|
@change="edit('labelNear')"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item v-if="polygonLabel" label="最大可视:">
|
<el-input-number
|
:min="0"
|
v-model="data.polygon.labelFar"
|
@change="edit('labelFar')"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item v-if="!polygonLabel" class="nolabel-form-item">
|
<el-form-item class="inline-form-item" label="文本填充:">
|
<el-color-picker
|
v-model="data.color"
|
show-alpha
|
@change="edit('color')"
|
></el-color-picker>
|
</el-form-item>
|
<el-form-item class="inline-form-item" label="文本边框:">
|
<el-color-picker
|
v-model="data.outlineColor"
|
@change="edit('outlineColor')"
|
></el-color-picker>
|
</el-form-item>
|
</el-form-item>
|
<el-form-item v-if="!polygonLabel" class="nolabel-form-item">
|
<el-form-item class="inline-form-item" label="显示背景:">
|
<el-switch
|
v-model="data.point.showBackground"
|
@change="edit('showBackground')"
|
></el-switch>
|
</el-form-item>
|
<el-form-item class="inline-form-item" label="忽略遮挡:">
|
<el-switch
|
v-model="IgnoreShelter"
|
@change="edit('IgnoreShelter')"
|
></el-switch>
|
</el-form-item>
|
</el-form-item>
|
<div v-else>
|
<el-form-item class="nolabel-form-item">
|
<el-form-item class="inline-form-item" label="文本填充:">
|
<el-color-picker
|
v-model="data.polygon.labelColor"
|
show-alpha
|
@change="edit('labelColor')"
|
></el-color-picker>
|
</el-form-item>
|
<el-form-item class="inline-form-item" label="文本边框:">
|
<el-color-picker
|
v-model="data.polygon.labelOutlineColor"
|
show-alpha
|
@change="edit('labelOutlineColor')"
|
></el-color-picker>
|
</el-form-item>
|
</el-form-item>
|
<el-form-item label="忽略遮挡:">
|
<el-switch
|
v-model="IgnoreShelter"
|
@change="edit('IgnoreShelter')"
|
></el-switch>
|
</el-form-item>
|
</div>
|
<el-form-item v-if="data.point.showBackground" label="文本背景:">
|
<el-color-picker
|
v-model="data.point.backgroundColor"
|
show-alpha
|
@change="edit('backgroundColor')"
|
></el-color-picker>
|
</el-form-item>
|
</div>
|
<el-form-item label="高度类型:">
|
<el-select
|
v-model="data.point.heightReference"
|
@change="edit('heightReference')"
|
>
|
<el-option label="绝对高度" :value="0"></el-option>
|
<el-option label="相对高度" :value="2"></el-option>
|
<el-option label="贴地" :value="1"></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item v-if="data.point.heightReference != 1" label="高度值:">
|
<el-input-number
|
placeholder="可选"
|
v-model="data.point.pointHeight"
|
@change="edit('pointHeight')"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item v-if="showLabelBillboard" label="水平偏移:">
|
<el-input-number
|
v-model="data.point.offsetX"
|
@change="edit('offsetX')"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item v-if="showLabelBillboard" label="垂直偏移:">
|
<el-input-number
|
v-model="data.point.offsetY"
|
@change="edit('offsetY')"
|
></el-input-number>
|
</el-form-item>
|
<div v-if="showBillboard">
|
<el-form-item label="图标路径:" prop="image">
|
<el-input v-model="data.image" @change="edit('image')"></el-input>
|
</el-form-item>
|
<el-form-item v-if="pointType === 'billboard'" label="忽略遮挡:">
|
<el-switch
|
v-model="IgnoreShelter"
|
@change="edit('IgnoreShelter')"
|
></el-switch>
|
</el-form-item>
|
</div>
|
</div>
|
<div v-if="polyline">
|
<el-form-item label="线宽:" v-if="!data.polyline.effectWall">
|
<el-input-number
|
:min="0"
|
v-model="data.polyline.width"
|
@change="edit('width')"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item class="nolabel-form-item" v-if="!data.polyline.dash">
|
<el-form-item
|
label="流动墙:"
|
class="inline-form-item"
|
v-if="!data.polyline.effect"
|
>
|
<el-switch
|
v-model="data.polyline.effectWall"
|
:disabled="isEdit"
|
@change="edit('effectWall')"
|
></el-switch>
|
</el-form-item>
|
<el-form-item
|
label="流光线:"
|
class="inline-form-item"
|
v-if="!data.polyline.effectWall"
|
>
|
<el-switch
|
v-model="data.polyline.effect"
|
:disabled="isEdit"
|
@change="edit('effect')"
|
></el-switch>
|
</el-form-item>
|
</el-form-item>
|
<el-form-item label="间隔线:" v-if="!effectLine">
|
<el-switch
|
v-model="data.polyline.dash"
|
@change="edit('dash')"
|
></el-switch>
|
</el-form-item>
|
<el-form-item class="nolabel-form-item">
|
<el-form-item label="填充色:" class="inline-form-item">
|
<el-color-picker
|
v-model="data.color"
|
show-alpha
|
@change="edit('color')"
|
></el-color-picker>
|
</el-form-item>
|
<el-form-item
|
label="间隔色:"
|
class="inline-form-item"
|
v-if="data.polyline.dash"
|
>
|
<el-color-picker
|
v-model="data.polyline.gapColor"
|
show-alpha
|
@change="edit('gapColor')"
|
></el-color-picker>
|
</el-form-item>
|
<el-form-item
|
label="流光色:"
|
class="inline-form-item"
|
v-else-if="data.polyline.effect"
|
>
|
<el-color-picker
|
v-model="data.polyline.pointColor"
|
show-alpha
|
@change="edit('pointColor')"
|
></el-color-picker>
|
</el-form-item>
|
<el-form-item
|
label="边框色:"
|
class="inline-form-item"
|
v-else-if="!data.polyline.effectWall"
|
>
|
<el-color-picker
|
v-model="data.outlineColor"
|
show-alpha
|
@change="edit('outlineColor')"
|
></el-color-picker>
|
</el-form-item>
|
</el-form-item>
|
<el-form-item label="间隔长度:" v-if="data.polyline.dash">
|
<el-input-number
|
v-model="data.polyline.dashLength"
|
@change="edit('dashLength')"
|
></el-input-number>
|
</el-form-item>
|
<div v-else-if="data.polyline.effectWall">
|
<el-form-item label="顶部高度:">
|
<el-input-number
|
v-model="data.polyline.height"
|
@change="edit('height')"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item label="底部高度:">
|
<el-input-number
|
v-model="data.polyline.minHeight"
|
@change="edit('minHeight')"
|
></el-input-number>
|
</el-form-item>
|
</div>
|
<el-form-item label="移动速度:" v-if="effectLine">
|
<el-input-number
|
v-model="data.polyline.speed"
|
@change="edit('speed')"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item label="边框宽度:" v-else>
|
<el-input-number
|
v-model="data.polyline.outlineWidth"
|
@change="edit('outlineWidth')"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item
|
v-if="!data.clampToGround && !this.effectLine"
|
label="高度:"
|
>
|
<el-input-number
|
v-model="data.polyline.height"
|
@change="edit('height')"
|
></el-input-number>
|
</el-form-item>
|
</div>
|
<div v-else-if="polygon">
|
<el-form-item class="nolabel-form-item">
|
<el-form-item class="inline-form-item" label="显示注记:">
|
<el-switch
|
v-model="polygonLabel"
|
@change="showPolygonLabel"
|
></el-switch>
|
</el-form-item>
|
<el-form-item class="inline-form-item" label="显示边框:">
|
<el-switch
|
v-model="data.polygon.outline"
|
@change="edit('outline')"
|
></el-switch>
|
</el-form-item>
|
</el-form-item>
|
<el-form-item class="nolabel-form-item">
|
<el-form-item class="inline-form-item" label="填充色:">
|
<el-color-picker
|
v-model="data.color"
|
show-alpha
|
@change="edit('color')"
|
></el-color-picker>
|
</el-form-item>
|
<el-form-item
|
v-if="data.polygon.outline"
|
class="inline-form-item"
|
label="边框色:"
|
>
|
<el-color-picker
|
v-model="data.outlineColor"
|
@change="edit('outlineColor')"
|
></el-color-picker>
|
</el-form-item>
|
</el-form-item>
|
<!-- <el-form-item class="nolabel-form-item">
|
<el-form-item class="inline-form-item" label="是否水面:">
|
<el-switch
|
v-model="data.polygon.water"
|
@change="edit('water')"
|
></el-switch>
|
</el-form-item>
|
<el-form-item class="inline-form-item" label="显示边框:">
|
<el-switch
|
v-model="data.polygon.outline"
|
@change="edit('outline')"
|
></el-switch>
|
</el-form-item>
|
</el-form-item> -->
|
<el-form-item
|
label="边框宽度:"
|
v-if="data.polygon.outline && data.clampToGround"
|
>
|
<el-input-number
|
v-model="data.polygon.outlineWidth"
|
@change="edit('outlineWidth')"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item v-if="!data.clampToGround" label="底部高度:">
|
<el-input-number
|
v-model="data.polygon.height"
|
@change="edit('height')"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item v-if="!data.clampToGround" label="拉伸高度:">
|
<el-input-number
|
v-model="data.polygon.extrudedHeight"
|
@change="edit('extrudedHeight')"
|
></el-input-number>
|
</el-form-item>
|
</div>
|
<div v-else-if="polylineVolume">
|
<el-form-item class="nolabel-form-item">
|
<el-form-item
|
v-if="fields.length"
|
label="管径:"
|
class="inline-form-item"
|
>
|
<el-select
|
v-model="data.polylineVolume.radius"
|
placeholder="请选择字段名"
|
@change="edit('radius')"
|
style="width: 175px"
|
>
|
<el-option
|
v-for="field in fields"
|
:key="field"
|
:label="field"
|
:value="`[${field}]`"
|
>
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item v-else label="管径:" class="inline-form-item">
|
<el-input
|
placeholder="请输入管径"
|
v-model="data.polylineVolume.radius"
|
@change="edit('radius')"
|
style="width: 175px"
|
>
|
<template slot="append">
|
<el-button @click="confirmAddress" style="padding: 12px 6px"
|
>获取字段</el-button
|
>
|
</template>
|
</el-input>
|
</el-form-item>
|
<el-form-item class="inline-form-item" id="radiusScale">
|
<el-select
|
v-model="data.polylineVolume.radiusScale"
|
@change="edit('radiusScale')"
|
style="width: 70px"
|
>
|
<el-option label="m" :value="1"> </el-option>
|
<el-option label="cm" :value="0.01"> </el-option>
|
<el-option label="mm" :value="0.001"> </el-option>
|
</el-select>
|
</el-form-item>
|
</el-form-item>
|
<el-form-item class="nolabel-form-item">
|
<el-form-item label="填充色:" class="inline-form-item">
|
<el-color-picker
|
v-model="data.color"
|
show-alpha
|
@change="edit('color')"
|
></el-color-picker>
|
</el-form-item>
|
<el-form-item label="转接头:" class="inline-form-item">
|
<el-switch
|
v-model="data.polylineVolume.connect"
|
@change="edit('connect')"
|
></el-switch>
|
</el-form-item>
|
</el-form-item>
|
<el-form-item label="高度:">
|
<el-input-number
|
v-model="data.polylineVolume.height"
|
@change="edit('height')"
|
></el-input-number>
|
</el-form-item>
|
</div>
|
<div v-else-if="model">
|
<el-form-item label="模型:" prop="model">
|
<el-input v-model="data.url" @change="edit('url')"></el-input>
|
</el-form-item>
|
<el-form-item label="比例:">
|
<el-input-number
|
v-model="data.model.scale"
|
@change="edit('scale')"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item label="高度:">
|
<el-input-number
|
v-model="data.model.height"
|
@change="edit('height')"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item label="方位角:">
|
<el-input-number
|
v-model="data.model.heading"
|
@change="edit('heading')"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item label="俯仰角:">
|
<el-input-number
|
v-model="data.model.pitch"
|
@change="edit('pitch')"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item label="翻滚角:">
|
<el-input-number
|
v-model="data.model.roll"
|
@change="edit('roll')"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item label="填充色:">
|
<el-color-picker
|
v-model="data.color"
|
show-alpha
|
@change="edit('color')"
|
></el-color-picker>
|
</el-form-item>
|
</div>
|
<el-form-item
|
class="nolabel-form-item"
|
v-if="polygon && !data.polygon.mask"
|
>
|
<el-form-item label="建筑边界:" class="inline-form-item">
|
<el-switch
|
v-model="data.polygon.bulidingWall"
|
@change="edit('bulidingWall')"
|
></el-switch>
|
</el-form-item>
|
<el-form-item label="边界宽度:" class="inline-form-item">
|
<el-input-number
|
v-model="data.polygon.bulidingWallWidth"
|
:step="0.1"
|
:min="0"
|
@change="edit('bulidingWallWidth')"
|
controls-position="right"
|
style="width: 100px"
|
></el-input-number>
|
</el-form-item>
|
</el-form-item>
|
<el-form-item class="nolabel-form-item" v-if="clampToGround">
|
<el-form-item label="是否贴地:" class="inline-form-item">
|
<el-switch
|
v-model="data.clampToGround"
|
@change="edit('clampToGround')"
|
></el-switch>
|
</el-form-item>
|
<el-form-item
|
v-if="polygon && !data.polygon.bulidingWall"
|
label="遮罩反选:"
|
class="inline-form-item"
|
>
|
<el-switch
|
v-model="data.polygon.mask"
|
@change="edit('mask')"
|
></el-switch>
|
</el-form-item>
|
</el-form-item>
|
<el-form-item
|
label="贴地类型:"
|
v-if="clampToGround && data.clampToGround"
|
>
|
<el-select
|
v-model="data.classificationType"
|
@change="edit('classificationType')"
|
>
|
<el-option label="地形" :value="0"></el-option>
|
<el-option label="模型" :value="1"></el-option>
|
<el-option label="全部" :value="2"></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="最小距离:" v-if="!model">
|
<el-input-number
|
:min="0"
|
v-model="data.near"
|
@change="edit('near')"
|
placeholder="可选"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item label="最大距离:" v-if="!model">
|
<el-input-number
|
:min="0"
|
v-model="data.far"
|
@change="edit('far')"
|
placeholder="可选"
|
></el-input-number>
|
</el-form-item>
|
<el-form-item label="图层定位:">
|
<el-input v-model="flyTo" placeholder="可选" :title="flyToPosition">
|
<i
|
slot="suffix"
|
class="el-input__icon el-icon-map-location"
|
title="获取当前位置"
|
@click="getPosition"
|
></i>
|
</el-input>
|
</el-form-item>
|
</el-form>
|
</Popup>
|
</template>
|
|
<script>
|
import Popup from "@tools/Popup";
|
import popupTools from "./mixin/popupTools";
|
import geojsonEdit from "./mixin/geojsonEdit";
|
let geojson;
|
export default {
|
name: "AddGeojson",
|
components: {
|
Popup,
|
},
|
mixins: [popupTools, geojsonEdit],
|
data() {
|
return {
|
title: "添加数据",
|
type: "",
|
isEdit: false,
|
pointType: "label",
|
IgnoreShelter: true,
|
polygonLabel: false,
|
fontStyle: [],
|
left: undefined,
|
fields: [],
|
data: {
|
name: "geosjon数据",
|
class: "point",
|
urls: "",
|
url: "",
|
color: "rgba(255, 255, 255, 1)",
|
outlineColor: "#ffffff",
|
clampToGround: true,
|
classificationType: 2,
|
text: "",
|
image: undefined,
|
model: undefined,
|
point: {
|
font_family: "Microsoft YaHei",
|
size: "18px",
|
backgroundColor: undefined,
|
showBackground: false,
|
pointHeight: undefined,
|
heightReference: 0,
|
outlineWidth: 1,
|
italic: false,
|
bold: false,
|
offsetX: 0,
|
offsetY: 0,
|
imageScale: 1,
|
},
|
polyline: {
|
width: 2,
|
height: 0,
|
outlineWidth: 0,
|
dash: false,
|
dashLength: 20,
|
gapColor: "rgba(0,0,0,0)",
|
effect: false,
|
effectWall: false,
|
pointColor: "rgba(255, 255, 255, 1)",
|
speed: 2,
|
minHeight: 0,
|
},
|
polylineVolume: {
|
connect: true,
|
radius: 1,
|
height: 0,
|
radiusScale: 1,
|
},
|
polygon: {
|
extrudedHeight: 100,
|
height: 0,
|
outlineWidth: 1,
|
outline: false,
|
water: false,
|
mask: false,
|
bulidingWall: false,
|
bulidingWallWidth: 0.8,
|
labelNear: 0,
|
labelFar: 999999999,
|
labelColor: "rgba(255, 255, 255, 1)",
|
labelOutlineColor: "rgba(0, 0, 0, 1)",
|
},
|
model: {
|
scale: 1,
|
heading: 0,
|
pitch: 0,
|
roll: 0,
|
height: 0,
|
},
|
near: 0,
|
far: 99999999999,
|
},
|
// 表单验证规则
|
rules: {
|
model: [{ required: true, message: "请输入模型路径", trigger: "blur" }],
|
image: [{ required: true, message: "请输入图标路径", trigger: "blur" }],
|
text: [{ required: true, message: "请输入文本内容", trigger: "blur" }],
|
urls: [{ required: true, message: "请输入服务地址", trigger: "blur" }],
|
},
|
};
|
},
|
computed: {
|
// 点
|
point: function () {
|
return (
|
this.data.class === "point" ||
|
(this.data.class === "polygon" && this.polygonLabel)
|
);
|
},
|
// 线
|
polyline: function () {
|
return this.data.class === "polyline";
|
},
|
// 面
|
polygon: function () {
|
return this.data.class === "polygon";
|
},
|
// 管线
|
polylineVolume: function () {
|
return this.data.class === "polylineVolume";
|
},
|
// 模型点
|
model: function () {
|
return this.data.class === "model";
|
},
|
// 特效线
|
effectLine: function () {
|
return (
|
this.polyline &&
|
(this.data.polyline.effect || this.data.polyline.effectWall)
|
);
|
},
|
clampToGround: function () {
|
return (
|
(!this.point &&
|
!this.polylineVolume &&
|
!this.model &&
|
!this.effectLine) ||
|
this.polygonLabel
|
);
|
},
|
// 文本样式
|
showLable: function () {
|
return this.pointType === "label" || this.pointType === "labelBillboard";
|
},
|
// 模型样式
|
showModel: function () {
|
return this.pointType === "model";
|
},
|
// 图标样式
|
showBillboard: function () {
|
return (
|
this.pointType === "billboard" || this.pointType === "labelBillboard"
|
);
|
},
|
// 文本加图标样式
|
showLabelBillboard: function () {
|
return this.pointType === "labelBillboard";
|
},
|
},
|
mounted() {},
|
methods: {
|
// 关闭弹窗
|
close(isCloseBtn, isSave) {
|
if (!isSave && geojson) {
|
this.restore(geojson);
|
}
|
geojson = undefined;
|
// 重置data值
|
Object.assign(this.$data, this.$options.data());
|
!isCloseBtn && this.$refs.pop.close();
|
},
|
// 打开弹窗
|
open(type, editData, defaultData) {
|
this.close(true);
|
|
this.type = type;
|
this.isEdit = !!editData;
|
if (this.isEdit) {
|
this.title = "编辑数据";
|
this.left = "calc(100% - 420px)";
|
// 获取图层
|
geojson = sgworld.ProjectTree.getObject(editData.id);
|
// 保存当前配置参数
|
geojson.saveDefaultGeosjonData && geojson.saveDefaultGeosjonData();
|
if (editData.class === "label" || editData.class === "image") {
|
editData.class = "point";
|
}
|
|
sgworld.Core.extend(this.data, editData, true, true);
|
sgworld.Core.extend(this.data[editData.class], editData, true, true);
|
this.data.id = editData.id;
|
|
if (editData.class === "polygon" && editData.text) {
|
this.polygonLabel = true;
|
sgworld.Core.extend(this.data.point, editData, true, true);
|
}
|
|
if (editData.class === "point" || this.polygonLabel) {
|
this.IgnoreShelter = editData.disableDepthTestDistance === "Infinity";
|
editData.bold && this.fontStyle.push("bold");
|
editData.italic && this.fontStyle.push("italic");
|
|
if (editData.text && editData.image) {
|
this.pointType = "labelBillboard";
|
} else if (editData.image) {
|
this.pointType = "billboard";
|
}
|
}
|
|
// 定位
|
editData.flyTo && (this.flyTo = editData.flyTo.join(","));
|
} else {
|
this.title = "添加数据";
|
if (defaultData) {
|
// 合并参数
|
sgworld.Core.extend(this.data, defaultData, true, true);
|
}
|
}
|
|
this.$refs.pop.open();
|
},
|
// 添加数据
|
addData() {
|
this.$refs.form.validate((valid) => {
|
// 验证通过
|
if (valid) {
|
let data = {
|
id: window.sgworld.Core.getuid(),
|
sourceType: this.type,
|
...this.data,
|
...this.data[this.data.class],
|
};
|
if (this.flyTo) {
|
data.flyTo = this.flyTo.split(",");
|
}
|
if (this.polygonLabel) {
|
let outlineWidth = data.outlineWidth;
|
Object.assign(data, this.data.point);
|
data.outlineWidth = outlineWidth;
|
}
|
|
if (data.class === "point" || this.polygonLabel) {
|
this.IgnoreShelter && (data.disableDepthTestDistance = "Infinity");
|
this.fontStyle.includes("bold") && (data.bold = true);
|
this.fontStyle.includes("italic") && (data.italic = true);
|
} else {
|
delete data.text;
|
delete data.image;
|
delete data.model;
|
}
|
delete data.point;
|
delete data.polyline;
|
delete data.polygon;
|
delete data.polylineVolume;
|
delete data.model;
|
|
if (this.isEdit && this.effectLine) {
|
geojson.updateLayer && geojson.updateLayer(data);
|
}
|
|
this.$emit("success", data, this.isEdit);
|
|
this.close(false, true);
|
}
|
});
|
},
|
// 编辑
|
edit(editType) {
|
this.isEdit && this.editGeosjon(editType, geojson);
|
},
|
showPolygonLabel() {
|
if (this.polygonLabel) {
|
this.pointType = "label";
|
}
|
this.edit("polygonLabel");
|
},
|
},
|
};
|
</script>
|
|
<style scoped lang="less">
|
.el-form {
|
margin-top: 20px;
|
margin-right: 10px;
|
width: 380px;
|
|
/deep/ .el-form-item__label {
|
color: #fff;
|
font-size: 18px;
|
}
|
|
/deep/ .el-select {
|
width: 100%;
|
}
|
|
.minBtn {
|
width: 16px;
|
height: 16px;
|
background-image: url(~@/assets/default.png);
|
cursor: pointer;
|
}
|
.bold {
|
background-position: 0 -416px;
|
}
|
.italic {
|
background-position: 0 -432px;
|
}
|
|
/deep/ #radiusScale {
|
.el-form-item__content {
|
margin-left: 10px !important;
|
}
|
}
|
}
|
</style>
|