# qe-polyline

这个组件主要用于三维中绘制线要素。


# 实例

隐藏代码
<template>

  <div style="height: 600px;">
  <div  style="height: 10%;">
      <el-button-group>
        <el-button 
          type="primary" 
          size="mini" 
          @click="setStyle(0)">
          普通线
        </el-button>
        <el-button 
          type="primary" 
          size="mini"
          @click="setStyle(1)">
          流动线
        </el-button>
        <el-button 
          type="primary" 
          size="mini"
          @click="setStyle(2)">
          箭头线
        </el-button>
        <el-button 
          type="primary" 
          size="mini"
          @click="setStyle(3)">
          虚线
        </el-button>
        <el-button 
          type="primary" 
          size="mini"
          @click="setStyle(4)">
          虚线2
        </el-button>
        <el-button 
          type="primary" 
          size="mini"
          @click="setStyle(5)">
          虚线3
        </el-button>
        <el-button 
          type="primary" 
          size="mini"
          @click="setStyle(6)">
          虚线4
        </el-button>
        <el-button 
          type="primary" 
          size="mini"
          @click="setStyle(7)">
          虚线5
        </el-button>
        <el-button 
          type="primary" 
          size="mini"
          @click="setStyle(8)">
          虚线6
        </el-button>
        <el-button 
          type="primary" 
          size="mini"
          @click="setStyle(9)">
          虚线7
        </el-button>
        <el-button 
          type="primary" 
          size="mini"
          @click="setStyle(10)">
          虚线8
        </el-button>
        <el-button 
          type="primary" 
          size="mini"
          @click="layerFilter()">
          layerFilter
        </el-button>
      </el-button-group>
    </div>
    <qe-viewer style="height:90%"
      :imagery-type="'AMap'"
      :fullscreen-button="true"
      :default-view="defaultView"
    >
    <qe-entity-layer v-if="isShowLayer" @ready="layerHandler">
      <qe-polyline
      id="test"
        :positions="corridorPath"
        :styles="styles" 
        :attr="{name: '测试数据'}"
        @ready="getData"
        @click="handler"
      ></qe-polyline>
    </qe-entity-layer>
    </qe-viewer>
  </div>
</template>

<script>
import { QeViewer, QeEntityLayer, QePolyline } from '@qycloud/vue-qearth';
import { QEarth } from '@qycloud/vue-qearth';
import 'vue2qearth/vue2qearth.css'
import elementUI from 'element-ui'
import Vue from 'vue'
import 'element-ui/lib/theme-chalk/index.css'

Vue.use(elementUI)
let layer;
export default {
  components: {
    QeViewer, 
    QeEntityLayer, 
    QePolyline
  },
  data () {
    return {
      markers:[],
      defaultView: [
        118.7863,
        31.9087,
        801.6425,
        1.724684714172732,
        -53.783141852231246,
        0.008819224020548466
      ],
      isShowLayer: true,
      corridorPath: [
        [118.78653636, 31.91315607, -0.14395184],
        [118.78717476, 31.91365014, 0.9309363],
        [118.78773082, 31.91401772, 0.65392468],
        [118.78792258, 31.91435828, 4.09293584]
      ],
      styles: {
        material: "#00FFAA",
        width: 8
      }
    };
  },
  methods: {
    getData(ele){
      window.polyline=ele
    },
    setStyle(type){
      switch(type){
        case 0:
          window.polyline.setStyle({
            material: QEarth.Color.fromCssColorString("rgba(241,12,122,0.7)")
          });
          break;
        case 1:
          window.polyline.setStyle({
            material: new QEarth.PolylineImageTrailMaterialProperty({
              color: QEarth.Color.GREEN,
              repeat: { x: 200, y: 1 },
              speed: 10,
              image:require("../../src/assets/dataImages/arrow3.png")
            })
          });
          break;
        case 2:
          window.polyline.setStyle({
            material: new QEarth.PolylineImageMaterialProperty({
              color: QEarth.Color.fromCssColorString('#00FFAA'),
              imageWidth: 30,
              speed: 0,
              image:require("../../src/assets/dataImages/arrow3.png")
            })
          });
          break;
        case 3:
          window.polyline.setStyle({
            material: new QEarth.PolylineDashMaterialProperty({
              color: QEarth.Color.fromCssColorString('#ed1212'),
              gapColor:QEarth.Color.fromCssColorString('#edff12'),
              dashLength:50
            })
          });
          break;
        case 4:
          window.polyline.setStyle({
            material: new QEarth.PolylineDashedMaterialProperty({
              color: QEarth.Color.fromCssColorString('red'),
              isMulti: false,
              dashL0: 20.0,
              dashR0: 0.2
            })
          });
          break;
        case 5:
          window.polyline.setStyle({
            material: new QEarth.PolylineDashedMaterialProperty({
              color: QEarth.Color.fromCssColorString('red'),
              isMulti: false,
              dashL0: 20.0,
              dashR0: 0.4
            })
          });
          break;
        case 6:
          window.polyline.setStyle({
            material: new QEarth.PolylineDashedMaterialProperty({
              color: QEarth.Color.fromCssColorString('red'),
              isMulti: false,
              dashL0: 20.0,
              dashR0: 0.6
            })
          });
          break;
        case 78:
          window.polyline.setStyle({
            material: new QEarth.PolylineDashedMaterialProperty({
              color: QEarth.Color.fromCssColorString('red'),
              isMulti: false,
              dashL0: 20.0,
              dashR0: 0.8
            })
          });
          break;
        case 8:
          window.polyline.setStyle({
            material: new QEarth.PolylineDashedMaterialProperty({
              color: QEarth.Color.fromCssColorString('red'),
              isMulti: false,
              dashL0: 20.0,
              dashR0: 1.0
            })
          });
          break;
        case 9:
          window.polyline.setStyle({
            material: new QEarth.PolylineDashedMaterialProperty({
              color: QEarth.Color.fromCssColorString('red'),
              isMulti: true,
              dashL0: 20.0,
              dashR0: 0.2,
              dashL1: 40.0,
              dashR1: 0.3
            })
          });
          break;
        case 10:
          window.polyline.setStyle({
            material: new QEarth.PolylineDashedMaterialProperty({
              color: QEarth.Color.fromCssColorString('red'),
              isMulti: true,
              dashL0: 20.0,
              dashR0: 0.2,
              dashL1: 60.0,
              dashR1: 0.3
            })
          });
          break;
          default:
            break;
      }
    },
    handler(evt) {
      const attr = evt.overlay.attr;
      alert(`该要素的名称为--${attr.name}`)
    },
    layerHandler(target){
      layer=target;
    },
    layerFilter(){
      console.log(layer._cache,'====layer._cache')
      console.log(layer._cache['test'],'====layer._cache["test"]')
    }
  }
}
</script>

# Attributes

参数 说明 类型 可选值 默认值
positions 线坐标串,[[lng-经度,lat-纬度,alt-高度],[],...] array
styles polyline 可选样式参数 object 参照 polyline-styles
attr 用户自定义属性,支持 JavaScript API 任意数据类型 *

# polyline-styles

  // 样式参数(可选)
  {
    "width": 1, //线宽
    "material": "red", //材质
    "arcType": 1, // 线条类型。NONE: 0, GEODESIC: 1, RHUMB: 2
    "clampToGround": false, //是否贴地
    "shadows": 0, //阴影类型,0:禁用、1:启用 、2:投射、3:接受
    "distanceDisplayCondition": {
      "near": 0, //最近距离
      "far": Number.MAX_VALUE //最远距离
    }, //根据距离设置可见
    "classificationType": 2, //分类 是否影响地形,3D切片或同时影响这两者。0:地形、1:3D切片、2:两者
    "zIndex": 0 //层级
  }

# Events

覆盖物事件的使用请参照上面Polyline 实例


// 覆盖物可选事件
"ready" // 组件装载后,返回当前实例对象
"click" // 鼠标点击事件
"rightclick" // 鼠标右击事件
"dblclick" // 鼠标双击事件
"mousemove" // 鼠标移动事件
"wheel" // 鼠标滚轮事件
"mouseover" // 鼠标移入事件
"mouseout" // 鼠标移出事件
最后更新时间: 5/19/2023, 10:45:48 AM