After Width: | Height: | Size: 712 B |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 966 B |
@ -0,0 +1,221 @@
|
||||
// this L.CRS.Baidu from https://github.com/muyao1987/leaflet-tileLayer-baidugaode/blob/master/src/tileLayer.baidu.js
|
||||
|
||||
if (L.Proj) {
|
||||
L.CRS.Baidu = new L.Proj.CRS('EPSG:900913', '+proj=merc +a=6378206 +b=6356584.314245179 +lat_ts=0.0 +lon_0=0.0 +x_0=0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs', {
|
||||
resolutions: function () {
|
||||
var level = 19
|
||||
var res = [];
|
||||
res[0] = Math.pow(2, 18);
|
||||
for (var i = 1; i < level; i++) {
|
||||
res[i] = Math.pow(2, (18 - i))
|
||||
}
|
||||
return res;
|
||||
}(),
|
||||
origin: [0, 0],
|
||||
bounds: L.bounds([20037508.342789244, 0], [0, 20037508.342789244])
|
||||
});
|
||||
}
|
||||
|
||||
L.TileLayer.ChinaProvider = L.TileLayer.extend({
|
||||
|
||||
initialize: function (type, options) { // (type, Object)
|
||||
var providers = L.TileLayer.ChinaProvider.providers;
|
||||
|
||||
options = options || {}
|
||||
|
||||
var parts = type.split('.');
|
||||
|
||||
var providerName = parts[0];
|
||||
var mapName = parts[1];
|
||||
var mapType = parts[2];
|
||||
|
||||
var url = providers[providerName][mapName][mapType];
|
||||
options.subdomains = providers[providerName].Subdomains;
|
||||
options.key = options.key || providers[providerName].key;
|
||||
|
||||
if ('tms' in providers[providerName]) {
|
||||
options.tms = providers[providerName]['tms']
|
||||
}
|
||||
|
||||
L.TileLayer.prototype.initialize.call(this, url, options);
|
||||
},
|
||||
|
||||
getTileUrl: function (coords) {
|
||||
var data = {
|
||||
s: this._getSubdomain(coords),
|
||||
x: coords.x,
|
||||
y: coords.y,
|
||||
z: this._getZoomForUrl(),
|
||||
};
|
||||
if (this._map && !this._map.options.crs.infinite) {
|
||||
var invertedY = this._globalTileRange.max.y - coords.y;
|
||||
if (this.options.tms) {
|
||||
data['y'] = invertedY;
|
||||
}
|
||||
data['-y'] = invertedY;
|
||||
}
|
||||
|
||||
data.sx = data.x >> 4
|
||||
data.sy = ((1 << data.z) - data.y) >> 4
|
||||
|
||||
return L.Util.template(this._url, L.Util.extend(data, this.options));
|
||||
},
|
||||
|
||||
createTile: function (coords) {
|
||||
// 创建一个用于绘图的 <canvas> 元素
|
||||
var tile = L.DomUtil.create('canvas', 'leaflet-tile');
|
||||
|
||||
// 根据选项设置瓦片的宽度和高度
|
||||
var size = this.getTileSize();
|
||||
tile.width = size.x;
|
||||
tile.height = size.y;
|
||||
|
||||
// 获得一个 canvas 上下文,并使用 coords.x、coords.y 和 coords.z 在上面画东西
|
||||
var ctx = tile.getContext('2d');
|
||||
|
||||
// 使用传入的 URL 模板替换变量
|
||||
var url = this._url
|
||||
.replace('{s}', this._getSubdomain(coords))
|
||||
.replace('{x}', coords.x)
|
||||
.replace('{y}', coords.y)
|
||||
.replace('{z}', this._getZoomForUrl());
|
||||
|
||||
|
||||
// 创建一个图像对象来加载瓦片
|
||||
var img = new Image();
|
||||
|
||||
img.src = url; // 替换为你的图片路径
|
||||
img.setAttribute('crossOrigin', 'anonymous')
|
||||
|
||||
/**获取外部接受的颜色*/
|
||||
var color = this.options.color;
|
||||
|
||||
// 当图片加载完成后,绘制到 Canvas 上
|
||||
img.onload = function () {
|
||||
// 绘制图片到 Canvas 上
|
||||
ctx.drawImage(img, 0, 0, tile.width, tile.height);
|
||||
|
||||
if (color) {
|
||||
|
||||
// 获取图像的像素数据
|
||||
var imageData = ctx.getImageData(0, 0, tile.width, tile.height);
|
||||
// 获取原来的图片的像素颜色
|
||||
var pixels = imageData.data;
|
||||
for (let i = 0; i < pixels.length; i += 4) {
|
||||
const r = pixels[i],
|
||||
g = pixels[i + 1],
|
||||
b = pixels[i + 2],
|
||||
a = pixels[i + 3];
|
||||
//计算灰度
|
||||
var grayVal = (r + g + b) / 3;
|
||||
//灰度反转--会使图片整体变成灰色--方便上色
|
||||
grayVal = 255 - grayVal;
|
||||
//将灰度替换掉原始的颜色
|
||||
pixels[i] = grayVal + color.r;
|
||||
pixels[i + 1] = grayVal + color.g;
|
||||
pixels[i + 2] = grayVal + color.b;
|
||||
//设置一个前景透明度,以便和背景混合
|
||||
if (color.a) {
|
||||
pixels[i + 3] = a * color.a;
|
||||
}
|
||||
}
|
||||
// 将修改后的像素数据放回 Canvas
|
||||
ctx.putImageData(imageData, 0, 0);
|
||||
}
|
||||
};
|
||||
// 返回瓦片,以便在屏幕上呈现
|
||||
return tile;
|
||||
}
|
||||
});
|
||||
|
||||
L.TileLayer.ChinaProvider.providers = {
|
||||
TianDiTu: {
|
||||
Normal: {
|
||||
Map: "//t{s}.tianditu.gov.cn/DataServer?T=vec_w&X={x}&Y={y}&L={z}&tk={key}",
|
||||
Annotion: "//t{s}.tianditu.gov.cn/DataServer?T=cva_w&X={x}&Y={y}&L={z}&tk={key}"
|
||||
},
|
||||
Satellite: {
|
||||
Map: "//t{s}.tianditu.gov.cn/DataServer?T=img_w&X={x}&Y={y}&L={z}&tk={key}",
|
||||
Annotion: "//t{s}.tianditu.gov.cn/DataServer?T=cia_w&X={x}&Y={y}&L={z}&tk={key}"
|
||||
},
|
||||
Terrain: {
|
||||
Map: "//t{s}.tianditu.gov.cn/DataServer?T=ter_w&X={x}&Y={y}&L={z}&tk={key}",
|
||||
Annotion: "//t{s}.tianditu.gov.cn/DataServer?T=cta_w&X={x}&Y={y}&L={z}&tk={key}"
|
||||
},
|
||||
Subdomains: ['0', '1', '2', '3', '4', '5', '6', '7'],
|
||||
key: "174705aebfe31b79b3587279e211cb9a"
|
||||
},
|
||||
|
||||
GaoDe: {
|
||||
Normal: {
|
||||
// Map: 'https://webst0{s}.is.autonavi.com/appmaptile?style=7&x={x}&y={y}&z={z}' //高清
|
||||
Map: '//webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}'
|
||||
},
|
||||
Satellite: {
|
||||
Map: 'https://webst0{s}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}',
|
||||
Annotion: 'https://webst0{s}.is.autonavi.com/appmaptile?style=8&x={x}&y={y}&z={z}'
|
||||
},
|
||||
Subdomains: ["1", "2", "3", "4"]
|
||||
},
|
||||
|
||||
Google: {
|
||||
Normal: {
|
||||
Map: "//www.google.cn/maps/vt?lyrs=m@189&gl=cn&x={x}&y={y}&z={z}"
|
||||
},
|
||||
Satellite: {
|
||||
Map: "//www.google.cn/maps/vt?lyrs=s@189&gl=cn&x={x}&y={y}&z={z}",
|
||||
Annotion: "//www.google.cn/maps/vt?lyrs=y@189&gl=cn&x={x}&y={y}&z={z}"
|
||||
},
|
||||
Subdomains: []
|
||||
},
|
||||
|
||||
Geoq: {
|
||||
Normal: {
|
||||
Map: "//map.geoq.cn/ArcGIS/rest/services/ChinaOnlineCommunity/MapServer/tile/{z}/{y}/{x}",
|
||||
PurplishBlue: "//map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetPurplishBlue/MapServer/tile/{z}/{y}/{x}",
|
||||
Gray: "//map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetGray/MapServer/tile/{z}/{y}/{x}",
|
||||
Warm: "//map.geoq.cn/ArcGIS/rest/services/ChinaOnlineStreetWarm/MapServer/tile/{z}/{y}/{x}",
|
||||
},
|
||||
Theme: {
|
||||
Hydro: "//thematic.geoq.cn/arcgis/rest/services/ThematicMaps/WorldHydroMap/MapServer/tile/{z}/{y}/{x}"
|
||||
},
|
||||
Subdomains: []
|
||||
},
|
||||
|
||||
OSM: {
|
||||
Normal: {
|
||||
Map: "//{s}.tile.osm.org/{z}/{x}/{y}.png",
|
||||
},
|
||||
Subdomains: ['a', 'b', 'c']
|
||||
},
|
||||
|
||||
Baidu: {
|
||||
Normal: {
|
||||
Map: '//online{s}.map.bdimg.com/onlinelabel/?qt=tile&x={x}&y={y}&z={z}&styles=pl&scaler=1&p=1'
|
||||
},
|
||||
Satellite: {
|
||||
Map: '//shangetu{s}.map.bdimg.com/it/u=x={x};y={y};z={z};v=009;type=sate&fm=46',
|
||||
Annotion: '//online{s}.map.bdimg.com/tile/?qt=tile&x={x}&y={y}&z={z}&styles=sl&v=020'
|
||||
},
|
||||
Subdomains: '0123456789',
|
||||
tms: true
|
||||
},
|
||||
|
||||
Tencent: {
|
||||
Normal: {
|
||||
Map: "//rt{s}.map.gtimg.com/tile?z={z}&x={x}&y={-y}&type=vector&styleid=3",
|
||||
},
|
||||
Satellite: {
|
||||
Map: "//p{s}.map.gtimg.com/sateTiles/{z}/{sx}/{sy}/{x}_{-y}.jpg",
|
||||
},
|
||||
Terrain: {
|
||||
Map: "//p{s}.map.gtimg.com/demTiles/{z}/{sx}/{sy}/{x}_{-y}.jpg"
|
||||
},
|
||||
Subdomains: '0123',
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
L.tileLayer.chinaProvider = function (type, options) {
|
||||
return new L.TileLayer.ChinaProvider(type, options);
|
||||
};
|
@ -0,0 +1,143 @@
|
||||
/* eslint-disable */
|
||||
L.CoordConver = function () {
|
||||
function a(b, c) {
|
||||
var d =
|
||||
-100 +
|
||||
2 * b +
|
||||
3 * c +
|
||||
0.2 * c * c +
|
||||
0.1 * b * c +
|
||||
0.2 * Math.sqrt(Math.abs(b)),
|
||||
d = d + (2 * (20 * Math.sin(6 * b * e) + 20 * Math.sin(2 * b * e))) / 3,
|
||||
d = d + (2 * (20 * Math.sin(c * e) + 40 * Math.sin((c / 3) * e))) / 3
|
||||
return (d +=
|
||||
(2 * (160 * Math.sin((c / 12) * e) + 320 * Math.sin((c * e) / 30))) / 3)
|
||||
}
|
||||
function f(b, c) {
|
||||
var d =
|
||||
300 +
|
||||
b +
|
||||
2 * c +
|
||||
0.1 * b * b +
|
||||
0.1 * b * c +
|
||||
0.1 * Math.sqrt(Math.abs(b)),
|
||||
d = d + (2 * (20 * Math.sin(6 * b * e) + 20 * Math.sin(2 * b * e))) / 3,
|
||||
d = d + (2 * (20 * Math.sin(b * e) + 40 * Math.sin((b / 3) * e))) / 3
|
||||
return (d +=
|
||||
(2 * (150 * Math.sin((b / 12) * e) + 300 * Math.sin((b / 30) * e))) / 3)
|
||||
}
|
||||
this.getCorrdType = function (b) {
|
||||
var c = 'wgs84'
|
||||
switch (b.split('.')[0]) {
|
||||
case 'Geoq':
|
||||
case 'GaoDe':
|
||||
case 'Google':
|
||||
c = 'gcj02'
|
||||
break
|
||||
case 'Baidu':
|
||||
c = 'bd09'
|
||||
break
|
||||
case 'OSM':
|
||||
case 'TianDiTu':
|
||||
c = 'wgs84'
|
||||
}
|
||||
return c
|
||||
}
|
||||
this.bd09_To_gps84 = function (b, c) {
|
||||
var d = this.bd09_To_gcj02(b, c)
|
||||
return this.gcj02_To_gps84(d.lng, d.lat)
|
||||
}
|
||||
this.gps84_To_bd09 = function (b, c) {
|
||||
var d = this.gps84_To_gcj02(b, c)
|
||||
return this.gcj02_To_bd09(d.lng, d.lat)
|
||||
}
|
||||
this.gps84_To_gcj02 = function (b, c) {
|
||||
var d = a(b - 105, c - 35),
|
||||
k = f(b - 105, c - 35),
|
||||
l = (c / 180) * e,
|
||||
g = Math.sin(l),
|
||||
g = 1 - n * g * g,
|
||||
m = Math.sqrt(g),
|
||||
d = (180 * d) / (((h * (1 - n)) / (g * m)) * e),
|
||||
k = (180 * k) / ((h / m) * Math.cos(l) * e)
|
||||
return { lng: b + k, lat: c + d }
|
||||
}
|
||||
this.gcj02_To_gps84 = function (b, c) {
|
||||
var d = a(b - 105, c - 35),
|
||||
k = f(b - 105, c - 35),
|
||||
l = (c / 180) * e,
|
||||
g = Math.sin(l),
|
||||
g = 1 - n * g * g,
|
||||
m = Math.sqrt(g),
|
||||
d = (180 * d) / (((h * (1 - n)) / (g * m)) * e),
|
||||
k = (180 * k) / ((h / m) * Math.cos(l) * e)
|
||||
return { lng: 2 * b - (b + k), lat: 2 * c - (c + d) }
|
||||
}
|
||||
this.gcj02_To_bd09 = function (b, c) {
|
||||
var d = Math.sqrt(b * b + c * c) + 2e-5 * Math.sin(c * p),
|
||||
a = Math.atan2(c, b) + 3e-6 * Math.cos(b * p)
|
||||
return { lng: d * Math.cos(a) + 0.0065, lat: d * Math.sin(a) + 0.006 }
|
||||
}
|
||||
this.bd09_To_gcj02 = function (b, c) {
|
||||
var d = b - 0.0065,
|
||||
a = c - 0.006,
|
||||
e = Math.sqrt(d * d + a * a) - 2e-5 * Math.sin(a * p),
|
||||
d = Math.atan2(a, d) - 3e-6 * Math.cos(d * p)
|
||||
return { lng: e * Math.cos(d), lat: e * Math.sin(d) }
|
||||
}
|
||||
var e = 3.141592653589793,
|
||||
h = 6378245,
|
||||
n = 0.006693421622965943,
|
||||
p = (3e3 * e) / 180
|
||||
}
|
||||
L.coordConver = function () {
|
||||
return new L.CoordConver()
|
||||
}
|
||||
L.TileLayer.ChinaProvider.include({
|
||||
addTo: function (a) {
|
||||
a.options.corrdType || (a.options.corrdType = this.options.corrdType)
|
||||
a.addLayer(this)
|
||||
return this
|
||||
},
|
||||
})
|
||||
L.tileLayer.chinaProvider = function (a, f) {
|
||||
f = f || {}
|
||||
f.corrdType = L.coordConver().getCorrdType(a)
|
||||
return new L.TileLayer.ChinaProvider(a, f)
|
||||
}
|
||||
L.GridLayer.include({
|
||||
_setZoomTransform: function (a, f, e) {
|
||||
var h = f
|
||||
void 0 != h &&
|
||||
this.options &&
|
||||
('gcj02' == this.options.corrdType
|
||||
? (h = L.coordConver().gps84_To_gcj02(f.lng, f.lat))
|
||||
: 'bd09' == this.options.corrdType &&
|
||||
(h = L.coordConver().gps84_To_bd09(f.lng, f.lat)))
|
||||
f = this._map.getZoomScale(e, a.zoom)
|
||||
e = a.origin
|
||||
.multiplyBy(f)
|
||||
.subtract(this._map._getNewPixelOrigin(h, e))
|
||||
.round()
|
||||
L.Browser.any3d
|
||||
? L.DomUtil.setTransform(a.el, e, f)
|
||||
: L.DomUtil.setPosition(a.el, e)
|
||||
},
|
||||
_getTiledPixelBounds: function (a) {
|
||||
var f = a
|
||||
void 0 != f &&
|
||||
this.options &&
|
||||
('gcj02' == this.options.corrdType
|
||||
? (f = L.coordConver().gps84_To_gcj02(a.lng, a.lat))
|
||||
: 'bd09' == this.options.corrdType &&
|
||||
(f = L.coordConver().gps84_To_bd09(a.lng, a.lat)))
|
||||
a = this._map
|
||||
var e = a._animatingZoom
|
||||
? Math.max(a._animateToZoom, a.getZoom())
|
||||
: a.getZoom(),
|
||||
e = a.getZoomScale(e, this._tileZoom),
|
||||
f = a.project(f, this._tileZoom).floor()
|
||||
a = a.getSize().divideBy(2 * e)
|
||||
return new L.Bounds(f.subtract(a), f.add(a))
|
||||
},
|
||||
})
|
@ -1 +1,60 @@
|
||||
<!-- 驾驶舱紧急事件 -->
|
||||
<!-- 驾驶舱紧急事件 -->
|
||||
<template>
|
||||
<div class="L-app-container">
|
||||
<header>驾驶舱群体事件</header>
|
||||
<div class="tabs">
|
||||
<el-tabs
|
||||
v-model="activeName"
|
||||
@tab-click="handleClick"
|
||||
style="color: #edeef0"
|
||||
>
|
||||
<el-tab-pane label="待审核" name="first">
|
||||
<!-- <notFilled v-if="isFirst" :id="null" :status="0"></notFilled> -->
|
||||
1
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="已上报" name="second">
|
||||
<!-- <notFilled v-if="isSecond" :id="1" :status="1"></notFilled> -->
|
||||
2
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="重训练" name="third">
|
||||
<!-- <notFilled v-if="isThird" :id="2" :status="1"></notFilled> -->
|
||||
3
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
activeName: "first",
|
||||
active: 0,
|
||||
isFirst : true,
|
||||
isSecond :false,
|
||||
isThird : false,
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
handleClick(e) {
|
||||
// console.log(this.activeName);
|
||||
if (this.activeName == "first") {
|
||||
this.isFirst = true;
|
||||
this.isSecond = false;
|
||||
this.isThird = false;
|
||||
} else if (this.activeName == "second") {
|
||||
this.isFirst = false;
|
||||
this.isSecond = true;
|
||||
this.isThird = false;
|
||||
} else if (this.activeName == "third") {
|
||||
this.isFirst = false;
|
||||
this.isSecond = false;
|
||||
this.isThird = true;
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
|
||||
</style>
|
||||
|