123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964 |
- <template>
- <div style="width:100%;height:100%">
- <div id="map" ref="rootmap"></div>
- <div class="shipDiv" v-show="deviceShow">
- <div class="shipTitle">
- <span style="float:left">{{ deviceData.name }}</span>
- <i class="el-icon-close" style="font-size:9rem;margin-top:2rem;float:right" @click="deviceShow=false"></i>
- </div>
- <div style="padding—left:10rem" class="shipContent">
- <el-tabs v-model="d_activeName" @tab-click="handleClick1">
- <el-tab-pane label="设备信息" name="d_first">
- <el-row :gutter="3" style="margin-top:5rem">
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595;">设备名称:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">{{ deviceData.name }}</div>
- </el-col>
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">监测点:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">{{ deviceData.monitorName }}</div>
- </el-col>
- </el-row>
- <el-row :gutter="3" style="margin-top:3rem">
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">设备状态:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">{{ deviceData.status }}</div>
- </el-col>
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">管辖机构:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">{{ deviceData.orgName }}</div>
- </el-col>
- </el-row>
- <el-row :gutter="3" style="margin-top:3rem">
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">更新时间:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">{{ deviceData.updateTime }}</div>
- </el-col>
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">经纬度:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">{{ deviceData.latilongti }}</div>
- </el-col>
- </el-row>
- </el-tab-pane>
- <el-tab-pane label="嫌疑船舶" name="d_second">
- <el-table :header-cell-style="{ background: '#e4eafc'}" ref="singleTable" :data="tabledatas" height="200px" highlight-current-row style="width: 100%;" class="tableSc">
- <el-table-column type="index" label="序号" width="50">
- </el-table-column>
- <el-table-column property="mmsi" label="MMSI" width="100">
- </el-table-column>
- <el-table-column property="shipName" label="船名" width="100">
- </el-table-column>
- <el-table-column property="values" label="监测值" width="100">
- </el-table-column>
- <el-table-column property="createTime" label="监测时间">
- </el-table-column>
- </el-table>
- </el-tab-pane>
- <el-tab-pane label="违规船舶" name="d_thrid">
- <el-table :header-cell-style="{ background: '#e4eafc'}" ref="singleTable" :data="tabledatas" height="200px" highlight-current-row style="width: 100%;" class="tableSc">
- <el-table-column type="index" label="序号" width="50">
- </el-table-column>
- <el-table-column property="mmsi" label="MMSI" width="100">
- </el-table-column>
- <el-table-column property="shipName" label="船名" width="100">
- </el-table-column>
- <el-table-column property="values" label="监测值" width="100">
- </el-table-column>
- <el-table-column property="createTime" label="监测时间">
- </el-table-column>
- </el-table>
- </el-tab-pane>
- </el-tabs>
- <!-- <el-row :gutter="3" style="margin-top:3rem">
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">对地航速:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">11111</div>
- </el-col>
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">对地航向:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">11111</div>
- </el-col>
- </el-row>
- <el-row :gutter="3" style="margin-top:3rem">
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">风向:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">11111</div>
- </el-col>
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">风速:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">11111</div>
- </el-col> -->
- <!-- <el-button style="margin-top:5rem;margin-left:10rem;background-color:#0d25a5;color:white;font-size:7rem" icon="el-icon-location-information">历史轨迹</el-button> -->
- </div>
- </div>
- <div class="shipDiv" v-show="shipShow">
- <div class="shipTitle">
- <span style="float:left">{{ shipName.shipName }}</span>
- <i class="el-icon-close" style="font-size:9rem;margin-top:2rem;float:right" @click="shipShow=false"></i>
- </div>
- <div style="padding—left:10rem" class="shipContent">
- <el-tabs v-model="activeName" @tab-click="handleClick">
- <el-tab-pane label="AIS信息" name="first">
- <el-row :gutter="3" style="margin-top:3rem">
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">MMSI:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">{{ shipName.mmsi }}</div>
- </el-col>
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">监测点:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">{{shipName.monitorPointName}}</div>
- </el-col>
- </el-row>
- <el-row :gutter="3" style="margin-top:3rem">
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">经度:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">{{shipName.lng}}</div>
- </el-col>
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">纬度:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">{{shipName.lat}}</div>
- </el-col>
- </el-row>
- <el-row :gutter="3" style="margin-top:3rem">
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">对地航速:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">{{shipName.speed}}</div>
- </el-col>
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">实际航向:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">{{shipName.head}}</div>
- </el-col>
- </el-row>
- <el-row :gutter="3" style="margin-top:3rem">
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">地面航线:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">{{shipName.course}}</div>
- </el-col>
- <el-col :span="4">
- <div class="grid-content bg-purple contentFont" style="float:right;color:#959595">位置接收时间:</div>
- </el-col>
- <el-col :span="8">
- <div class="grid-content bg-purple contentFont" style="float:left">{{shipName.receive}}</div>
- </el-col>
- </el-row>
- <el-button style="margin-top:5rem;margin-left:10rem;background-color:#0d25a5;color:white;font-size:7rem;display:none" icon="el-icon-location-information">历史轨迹</el-button>
- </el-tab-pane>
- <el-tab-pane label="主要监测数据" name="second">
- <el-table :header-cell-style="{ background: '#e4eafc'}" ref="singleTable" :data="tableData.main" highlight-current-row height="200px" style="width: 100%" class="tableSc">
- <el-table-column type="index" label="序号" width="50">
- </el-table-column>
- <el-table-column property="monitorPointName" label="监测点" width="100">
- </el-table-column>
- <el-table-column :label="'硫含量'">
- <template slot-scope="scope">
- <div v-if="scope.row.so2Percent!=null && scope.row.so2Percent > normalPer" style="color:red">{{ scope.row.so2Percent }}% ↑ {{ ((scope.row.so2Percent - normalPer) / normalPer * 100).toFixed(0) }}%</div>
- <div v-if="scope.row.so2Percent!=null && scope.row.so2Percent <= normalPer">{{ scope.row.so2Percent }}%</div>
- </template>
- </el-table-column>
- <el-table-column
- :label="'黑度'">
- <template slot-scope="scope">
- <div v-if="scope.row.rcgSoot!=null && scope.row.rcgSoot > normalCount" style="color:red">
- {{ scope.row.rcgSoot }}度 ↑ {{ ((scope.row.rcgSoot - normalCount) / normalCount * 100).toFixed(0) }}%</div>
- <div v-if="scope.row.rcgSoot!=null && scope.row.rcgSoot <= normalCount">{{ scope.row.rcgSoot }}度</div>
- </template>
- </el-table-column>
- <el-table-column
- property="createTime"
- label="监测时间">
- </el-table-column>
- </el-table>
- </el-tab-pane>
- <el-tab-pane label="其它监测数据" name="thrid">
- <el-table
- :header-cell-style="{ background: '#e4eafc'}"
- ref="singleTable"
- :data="tableData.minor"
- highlight-current-row height="200px"
- style="width: 100%"
- class="tableSc"
- >
- <el-table-column
- type="index"
- label="序号"
- width="50">
- </el-table-column>
- <el-table-column
- property="monitorPointName"
- label="监测点"
- >
- </el-table-column>
- <el-table-column
- :label="'SO2浓度'"
- >
- <template slot-scope="scope">
- <div v-if="scope.row.so2Concentration!=null && scope.row.so2Concentration > normalPer" style="color:red">
- {{ scope.row.so2Concentration }}% ↑</div>
- <div v-if="scope.row.so2Concentration!=null && scope.row.so2Concentration <= normalPer">{{ scope.row.so2Concentration }}%</div>
- </template>
- </el-table-column>
- <el-table-column
- :label="'NO2浓度'"
- >
- <template slot-scope="scope">
- <div v-if="scope.row.no2Concentration!=null && scope.row.no2Concentration > normalPer" style="color:red">
- {{ scope.row.no2Concentration }}% ↑</div>
- <div v-if="scope.row.no2Concentration!=null && scope.row.no2Concentration <= normalPer">{{ scope.row.no2Concentration }}%</div>
- </template>
- </el-table-column>
- <el-table-column
- :label="'CO2浓度'"
- >
- <template slot-scope="scope">
- <div v-if="scope.row.co2Concentration!=null && scope.row.co2Concentration > normalPer" style="color:red">
- {{ scope.row.co2Concentration }}% ↑</div>
- <div v-if=" scope.row.co2Concentration!=null && scope.row.co2Concentration <= normalPer">{{ scope.row.co2Concentration }}%</div>
- </template>
- </el-table-column>
- <el-table-column
- :label="'硫碳比'">
- <template slot-scope="scope">
- <div v-if="scope.row.so2Percent!=null && scope.row.so2Percent > normalCount" style="color:red">
- {{ scope.row.so2Percent }}度 ↑</div>
- <div v-if="scope.row.so2Percent!=null && scope.row.so2Percent <= normalCount">{{ scope.row.so2Percent }}度</div>
- </template>
- </el-table-column>
- <el-table-column
- property="createTime"
- label="监测时间">
- </el-table-column>
- </el-table>
- </el-tab-pane>
- </el-tabs>
- </div>
- </div>
- <div class="icon_div">
- <div style="margin-top:5rem">
- <div style="float:left;margin-left:5rem"><img src="../../assets/images/icon/zc.png"></img></div>
- <div style="float:left;margin-left:8rem"><span class="line_font">正常船舶</span></div>
- </div>
- <br/>
- <div style="margin-top:8rem">
- <div style="float:left;margin-left:5rem"><img src="../../assets/images/icon/xy.png"></img></div>
- <div style="float:left;margin-left:8rem"><span class="line_font">嫌疑船舶</span></div>
- </div>
- <br/>
- <div style="margin-top:8rem">
- <div style="float:left;margin-left:5rem"><img src="../../assets/images/icon/wg.png"></img></div>
- <div style="float:left;margin-left:8rem"><span class="line_font">违规船舶</span></div>
- </div>
- <!-- <div style="margin-top:75rem"><div></div><span class="line_font">支路</span></div> -->
- </div>
- <div class="icon_div" style="right: 263rem;">
- <div style="margin-top:5rem">
- <div style="float:left;margin-left:5rem"><img src="../../assets/images/icon/hy.png"></img></div>
- <div style="float:left;margin-left:8rem"><span class="line_font">黑烟设备</span></div>
- </div>
- <br/>
- <div style="margin-top:8rem">
- <div style="float:left;margin-left:5rem"><img src="../../assets/images/icon/ais.png"></img></div>
- <div style="float:left;margin-left:8rem"><span class="line_font">嗅探设备</span></div>
- </div>
- <br/>
- <div style="margin-top:8rem">
- <div style="float:left;margin-left:5rem"><img src="../../assets/images/icon/so2.png"></img></div>
- <div style="float:left;margin-left:8rem"><span class="line_font">光谱设备</span></div>
- </div>
- <br/>
- <!-- <div style="margin-top:75rem"><div></div><span class="line_font">支路</span></div> -->
- </div>
- <div class="radio_div" style="max-width:44rem">
- <el-radio-group v-model="caddr" @change="clickcg">
- <el-radio v-for="item in addrlist" :key="item.name" :label="item.name"></el-radio>
- </el-radio-group>
- </div>
- <div class="shipDiv" v-show="deviceTableShow">
- <div class="shipTitle">
- <span style="float:left">{{ pointDevice.name }}</span>
- <i class="el-icon-close" style="font-size:9rem;margin-top:2rem;float:right" @click="deviceTableShow=false"></i>
- </div>
- <div style="padding—left:10rem" class="shipContent">
- <el-table :header-cell-style="{ background: '#e4eafc'}" ref="singleTable" :data="pointDevice.list" height="200px" highlight-current-row style="width: 100%;" class="tableSc">
- <el-table-column type="index" label="序号" width="50">
- </el-table-column>
- <el-table-column property="monitorName" label="设备位置" width="100">
- </el-table-column>
- <el-table-column property="name" label="设备名称" width="100">
- </el-table-column>
- <el-table-column property="deviceType" label="设备类型" width="100">
- </el-table-column>
- <el-table-column property="status" label="设备状态">
- </el-table-column>
- <el-table-column property="orgName" label="管辖机构">
- </el-table-column>
- </el-table>
- </div>
- </div>
- </div>
- </template>
- <script>
- import "ol/ol.css";
- import Map from "ol/Map";
- import TileLayer from "ol/layer/Tile";
- import ImageLayer from "ol/layer/Image";
- import View from "ol/View";
- import { getTopLeft, getWidth } from "ol/extent";
- import ImageWMS from "ol/source/ImageWMS";
- import WMTS from "ol/source/WMTS";
- import TileWMS from "ol/source/TileWMS";
- import WMTSTileGrid from "ol/tilegrid/WMTS";
- import { get as getProjection, transform } from "ol/proj";
- import { Vector as SourceVec } from "ol/source";
- import { Feature } from "ol";
- import { LineString, Point } from "ol/geom";
- import { Icon, Stroke, Style } from "ol/style";
- import { Vector as LayerVec } from "ol/layer";
- import { queryShipByDeviceId, queryDatabymmsi } from "@/api/data/deviceData";
- let ispro = process.env.NODE_ENV === "production";
- let that = null;
- let mapv = null;
- // ispro = false;
- export default {
- props: {
- src: {
- type: String,
- required: false
- }
- },
- data() {
- return {
- map: null,
- shipName: '',
- deviceShow: false,
- deviceData: '',
- checkList: [],
- drawLayer: null,
- draw: null,
- normalPer: 0.1,
- normalCount: 1,
- activeName: 'first',
- tabledatas: [],
- deviceTableShow:false,
- pointDevice:{
- name:'',
- list:[],
- },
- // deviceList:[],
- d_activeName: 'd_first',
- tableData: { minor: [], main: [] },
- addrlist: [{ name: "南京四桥", location: [1, 1] }],
- caddr: "南京四桥",
- shipShow: false,
- shipdata: {},
- };
- },
- props:['deviceList'],
- mounted() {
- that = this;
- if (ispro) {
- this.initprod();
- } else {
- this.initdev();
- }
- mapv = this.map;
- this.map.on("click", function(e) {
- console.log(e)
- var feature = that.map.forEachFeatureAtPixel(e.pixel,
- function(feature) {
- return feature;
- });
- if (feature) { //这里说明我们点击的是点标记,
- let tadata = feature.get("tadata"); //我们可以通过给点标记传不同的值,来判断点击不同的点标记触发的事件。
- if (tadata) {
- if (tadata.sectionId == "line") {
- // alert("我是线:" + tadata.towerNumber)
- }
- if (tadata.sectionId == "point") {
- console.log(tadata);
- if (tadata.type == "ship") {
- that.shipShow = true;
- that.deviceShow = false;
- that.deviceTableShow = false
- that.shipName = tadata.data;
- that.activeName = "first";
- } else if (tadata.type == "device") {
- that.deviceShow = true;
- that.shipShow = false;
- that.deviceTableShow = false
- that.deviceData = tadata.data;
- that.d_activeName = 'd_first';
- }
- // alert("我是点:"+tadata.data)
- }
- //含有lnglat 参数的点标记触发事件
- }
- }
- });
- // this.addpoint();
- // this.addline();
- },
- methods: {
- //[[1111,1111]]
- handleClick1: function(tab, event) {
- var sect = tab.name;
- if (sect == "d_first") {
- return;
- }
- var q = {
- deviceId: this.deviceData.deviceId,
- illegalStatus: sect == "d_second" ? 2 : 3,
- index: this.deviceData.source
- }
- this.tabledatas = [];
- queryShipByDeviceId(q).then(data => {
- console.log(data);
- data.data.forEach(element => {
- element["values"] = element.illegalType == "heiyan" ? element.rcgSoot : (element.illegalType == "guangpu" ? element.so2Percent : (element.illegalType == "xiutan" ? element.so2Percent : 0));
- this.tabledatas.push(element);
- });
- });
- //dd
- },
- clickcg: (value) => {
- console.log(that.deviceList);
- that.pointDevice.list = that.deviceList[value];
- console.log(that.pointDevice);
- that.deviceTableShow = true;
- that.pointDevice.name = value;
- that.addrlist.forEach(element => {
- if (element.name == value) {
- var lo = that.transpoints(element.location, 0)[0];
- console.log(lo)
- mapv.getView().setCenter(lo);
- }
- });
- },
- setaddrlist(list) {
- this.addrlist = list;
- this.caddr = list[0].name;
- var lo = that.transpoints(list[0].location, 0)[0];
- mapv.getView().setCenter(lo);
- },
- addshipData(list) {
- },
- handleClick(tab, event) {
- console.log(tab, event);
- var sect = tab.name;
- if (sect == "first") {
- return;
- }
- var q = {
- mmsi: this.shipName.mmsi
- }
- this.tableData = { minor: [], main: [] };
- queryDatabymmsi(q).then(data => {
- console.log(data);
- this.tableData = data.data;
- // console.log(deviceList);
- });
- },
- transpoints: function(points, type) {
- if (false) {
- return points;
- } else {
- if (type == 1) {
- var pp = [];
- points.forEach(point => {
- pp.push(transform(point, "EPSG:3857", "EPSG:4326"));
- });
- return pp;
- } else {
- var pp = [];
- points.forEach(point => {
- pp.push(transform(point, "EPSG:4326", "EPSG:3857"));
- });
- return pp;
- }
- }
- },
- initdev: function() {
- function getWMTSLayer(url, layer) {
- let key = "98ec3e37b32974c2d58ea1a790640fe7"
- let projection = getProjection("EPSG:3857");
- let projectionExtent = projection.getExtent();
- let size = getWidth(projectionExtent) / 256;
- function getResolutions() {
- let resolutions = [];
- for (let z = 1; z < 19; ++z) {
- resolutions[z] = size / Math.pow(2, z);
- }
- return resolutions
- }
- return new TileLayer({
- source: new WMTS({
- url: url,
- layer: layer,
- style: "default",
- matrixSet: "w",
- format: "tiles",
- tileGrid: new WMTSTileGrid({
- origin: getTopLeft(projectionExtent),
- resolutions: getResolutions(),
- matrixIds: [ 0,1,2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,15,16,17,18,19],
- }),
- }),
- })
- }
- var projection = getProjection("EPSG:3857");
- var format = 'image/png';
- var bounds = [13325725.763124488, 3757032.814272983,
- 13345293.642365493, 3776600.693513988
- ];
- var untiled = new ImageLayer({
- source: new ImageWMS({
- ratio: 1,
- url: 'http://36.156.155.131:8090/geoserver/wms',
- params: {
- 'FORMAT': format,
- 'VERSION': '1.1.1',
- "STYLES": '',
- "CJAUTH": 'CJUSER',
- "LAYERS": 'CJ:G_CJ_NJ',
- "TRANSPARENT": 'true',
- "exceptions": 'application/vnd.ogc.se_inimage',
- }
- })
- });
- const ign = getWMTSLayer('https://t{0-7}.tianditu.gov.cn/vec_w/wmts?tk=98ec3e37b32974c2d58ea1a790640fe7', 'vec');
- var tiled = new TileLayer({
- visible: false,
- source: new TileWMS({
- url: 'http://36.156.155.131:8090/geoserver/wms',
- params: {
- 'FORMAT': format,
- 'VERSION': '1.1.1',
- tiled: true,
- "STYLES": '',
- "CJAUTH": 'CJUSER',
- "LAYERS": 'CJ:G_CJ_NJ',
- "TRANSPARENT": 'true',
- "exceptions": 'application/vnd.ogc.se_inimage',
- tilesOrigin: 13325725.763124488 + "," + 3757032.814272983
- }
- })
- });
- var map = new Map({
- target: 'map',
- layers: [
- ign,
- getWMTSLayer('https://t{0-7}.tianditu.gov.cn/cva_w/wmts?tk=98ec3e37b32974c2d58ea1a790640fe7', 'cva'),
- untiled,
- tiled
- ],
- view: new View({
- projection: projection
- })
- });
- // map.getView().fit([75.0, 20.0, 135.0, 50.0], map.getSize());
- this.map = map;
- // map.getView().setCenter(
- // [118.642876, 31.970445]
- // );
- map.getView().setCenter(this.transpoints([
- [118.642876, 31.970445]
- ], 0)[0]);
- map.getView().setZoom(13);
- },
- initdev1: function() {
- const proj3857 = getProjection("EPSG:3857");
- const tileGrid = new WMTSTileGrid({
- tileSize: [256, 256],
- origin: [-2.003750834e7, 2.003750834e7],
- extent: [-2.003750834e7, -2.003750834e7, 2.003750834e7, 2.003750834e7],
- resolutions: [
- 76.43702827453613,
- 38.218514137268066,
- 19.109257068634033,
- 9.554628534317017,
- 4.777314267158508
- ],
- matrixIds: [
- "EPSG:3857:10",
- "EPSG:3857:11",
- "EPSG:3857:12",
- "EPSG:3857:13",
- "EPSG:3857:14"
- ]
- });
- const ign_source = new WMTS({
- url: "http://geo.xt.wenhq.top:8083/geoserver/gwc/service/wmts?",
- layer: "test:nj10",
- matrixSet: "EPSG:3857",
- format: "image/png",
- projection: proj3857,
- tileGrid: tileGrid,
- style: ""
- });
- const ign = new TileLayer({
- source: ign_source
- });
- const map = new Map({
- target: "map",
- layers: [ign],
- view: new View({
- center: [0, 0],
- zoom: 2
- })
- });
- map
- .getView()
- .fit(
- [
- 13149614.849955281,
- 3639625.538826909,
- 13306157.88388332,
- 3874440.0897189667
- ],
- map.getSize()
- );
- this.map = map;
- map.getView().setCenter(this.transpoints([
- [118.642876, 31.970445]
- ], 0)[0]);
- map.getView().setZoom(13);
- },
- initprod: function() {
- // const proj3857 = getProjection("EPSG:4326");
- function getWMTSLayer(url, layer) {
- let key = "98ec3e37b32974c2d58ea1a790640fe7"
- let projection = getProjection("EPSG:3857");
- let projectionExtent = projection.getExtent();
- let size = getWidth(projectionExtent) / 256;
- function getResolutions() {
- let resolutions = [];
- for (let z = 1; z < 19; ++z) {
- resolutions[z] = size / Math.pow(2, z);
- }
- return resolutions
- }
- return new TileLayer({
- source: new WMTS({
- url: url,
- layer: layer,
- style: "default",
- matrixSet: "w",
- format: "tiles",
- tileGrid: new WMTSTileGrid({
- origin: getTopLeft(projectionExtent),
- resolutions: getResolutions(),
- matrixIds: [ 0,1,2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,15,16,17,18,19],
- }),
- }),
- })
- }
- var projection = getProjection("EPSG:3857");
- var format = 'image/png';
- var bounds = [13325725.763124488, 3757032.814272983,
- 13345293.642365493, 3776600.693513988
- ];
- var untiled = new ImageLayer({
- source: new ImageWMS({
- ratio: 1,
- url: 'http://198.17.188.64/geoserver/gwc/service/wms',
- params: {
- 'FORMAT': format,
- 'VERSION': '1.1.1',
- "STYLES": '',
- "CJAUTH": 'CJUSER',
- "LAYERS": 'CJ:G_CJ',
- "TRANSPARENT": 'true',
- "exceptions": 'application/vnd.ogc.se_inimage',
- }
- })
- });
- var tiled = new TileLayer({
- visible: false,
- source: new TileWMS({
- url: 'http://198.17.188.64/geoserver/gwc/service/wms',
- params: {
- 'FORMAT': format,
- 'VERSION': '1.1.1',
- tiled: true,
- "STYLES": '',
- "CJAUTH": 'CJUSER',
- "LAYERS": 'CJ:G_CJ',
- "TRANSPARENT": 'true',
- "exceptions": 'application/vnd.ogc.se_inimage',
- tilesOrigin: 13325725.763124488 + "," + 3757032.814272983
- }
- })
- });
- const map = new Map({
- target: "map",
- layers: [getWMTSLayer('http://198.17.188.64:9879/vec_w/wmts?tk=98ec3e37b32974c2d58ea1a790640fe7', 'vec'),getWMTSLayer('http://198.17.188.64:9879/cva_w/wmts?tk=98ec3e37b32974c2d58ea1a790640fe7', 'cva'),
- untiled,
- tiled],
- view: new View({
- projection: projection
- })
- });
- map.getView().fit([75.0, 20.0, 135.0, 50.0], map.getSize());
- this.map = map;
- map.getView().setCenter(this.transpoints([
- [118.642876, 31.970445]
- ], 0)[0]);
- map.getView().setZoom(13);
- },
- addline: function(linePoint) {
- var points = this.transpoints(linePoint, 0)
- let line = new Feature({
- tadata: {
- sectionId: "line",
- towerNumber: 22
- },
- geometry: new LineString(points)
- }); //这里要注意写fromLonLat,很重要
- line.setStyle(new Style({
- stroke: new Stroke({
- width: 3,
- color: "#008000"
- })
- }));
- this.linevectorLayer = new LayerVec({
- source: new SourceVec({
- features: [line] //要绘制多段线,直接push到这里面就行了
- })
- });
- this.map.addLayer(this.linevectorLayer); //这里是执行,执行之后点就出来了
- },
- addpoint: function(addrArry, data, img, type,rotation=0) {
- var lnglat = this.transpoints(addrArry, 0)[0];
- let tamarker = new Feature({
- tadata: {
- sectionId: "point",
- towerNumber: 22,
- data: data,
- type: type
- }, //这里是用来传值用的,在接下来的一章里(事件)中我会讲到。
- geometry: new Point(lnglat) //这里是点坐标的位置,这里要注意fromLonLat
- });
- tamarker.setStyle(
- new Style({
- image: new Icon({
- color: "#eee",
- rotation:rotation,
- crossOrigin: "anonymous",
- src: require("../../assets/images/icon/" + img) //本地的样式
- })
- })
- ); //这里是样式
- var markerta = new LayerVec({
- source: new SourceVec({
- features: [tamarker] //这里放的就是之前的那个点,如果要放置多个点直接push到这里面就行了
- })
- });
- this.map.addLayer(markerta); //这里是执行,执行之后点就出来了
- }
- }
- };
- </script>
- <style scoped>
- #map {
- height: 100%;
- }
- /*隐藏ol的一些自带元素*/
- .ol-attribution,
- .ol-zoom {
- display: none;
- }
- .contentFont {
- font-size: 6rem;
- line-height: 16rem;
- }
- .shipDiv {
- position: absolute;
- top: 250rem;
- left: 140rem;
- width: 240rem;
- min-height: 130rem;
- background-color: white;
- }
- .el-tabs__header {
- margin: 0 !important;
- }
- .shipTitle {
- padding-top: 4rem;
- padding-left: 10rem;
- padding-right: 10rem;
- width: 100%;
- height: 20rem;
- background-color: #0d25a5;
- color: white;
- font-size: 7rem
- }
- .shipContent>>>.el-tabs__item {
- font-weight: bold;
- color: #A8A8A8
- }
- .shipContent>>>.el-tabs__item.is-active {
- color: #0d25a5
- }
- .shipContent>>>.el-tabs__active-bar {
- margin-left: 10rem
- }
- .shipContent>>>.el-tabs__nav {
- padding-left: 10rem
- }
- .shipContent>>>.el-tabs__active-bar {
- background-color: #0d25a5
- }
- .tableSc>>>tr {
- padding: 0;
- height: 3rem;
- line-height: 3rem;
- font-size: 5rem;
- }
- .tableSc>>>td {
- padding: 0;
- height: 3rem;
- line-height: 3rem
- }
- .icon_div {
- position: absolute;
- top: 330rem;
- right: 160rem;
- width: 70rem;
- min-height: 40rem;
- background-color: white;
- }
- .radio_div {
- position: absolute;
- top: 50rem;
- left: 120rem;
- padding-top: 4rem;
- padding-left: 5rem;
- background-color: white;
- padding-right: 4rem;
- }
- .radio_div>div {
- line-height: 10rem;
- }
- .el-tabs__header {
- margin: 0 !important;
- }
- </style>
|