diff --git a/config/index.js b/config/index.js index cef61d9..4b3fb14 100644 --- a/config/index.js +++ b/config/index.js @@ -14,7 +14,7 @@ proxyTable: {}, // Various Dev Server settings - host: '0.0.0.0', // can be overwritten by process.env.HOST + // host: '0.0.0.0', // can be overwritten by process.env.HOST port: 8085, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined //是否自动打开浏览器 autoOpenBrowser: true, diff --git a/config/index.js b/config/index.js index cef61d9..4b3fb14 100644 --- a/config/index.js +++ b/config/index.js @@ -14,7 +14,7 @@ proxyTable: {}, // Various Dev Server settings - host: '0.0.0.0', // can be overwritten by process.env.HOST + // host: '0.0.0.0', // can be overwritten by process.env.HOST port: 8085, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined //是否自动打开浏览器 autoOpenBrowser: true, diff --git a/package.json b/package.json index d56b435..c8730cd 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,14 @@ "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", + "leaflet": "^1.9.3", + "leaflet-canvas-marker": "^0.2.0", + "leaflet-canvas-marker-xrr2021": "^1.0.2", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "npm": "^6.11.3", "nprogress": "0.2.0", + "proj4leaflet": "^1.0.2", "v-charts": "^1.19.0", "vue": "2.5.17", "vue-amap": "^0.5.9", diff --git a/config/index.js b/config/index.js index cef61d9..4b3fb14 100644 --- a/config/index.js +++ b/config/index.js @@ -14,7 +14,7 @@ proxyTable: {}, // Various Dev Server settings - host: '0.0.0.0', // can be overwritten by process.env.HOST + // host: '0.0.0.0', // can be overwritten by process.env.HOST port: 8085, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined //是否自动打开浏览器 autoOpenBrowser: true, diff --git a/package.json b/package.json index d56b435..c8730cd 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,14 @@ "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", + "leaflet": "^1.9.3", + "leaflet-canvas-marker": "^0.2.0", + "leaflet-canvas-marker-xrr2021": "^1.0.2", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "npm": "^6.11.3", "nprogress": "0.2.0", + "proj4leaflet": "^1.0.2", "v-charts": "^1.19.0", "vue": "2.5.17", "vue-amap": "^0.5.9", diff --git a/src/components/CMap/components/cmap.vue b/src/components/CMap/components/cmap.vue index 808ada3..9be1788 100644 --- a/src/components/CMap/components/cmap.vue +++ b/src/components/CMap/components/cmap.vue @@ -326,6 +326,7 @@ } // 有layerid if (layerInfoManager[layerId].layerid) { + opts.params.layerid = CEncode(layerInfoManager[layerId].layerid) } else { const tableinfo = { @@ -342,6 +343,7 @@ attrfds: layerInfoManager[layerId].attrfds } const tableinfostr = CEncodeSpecialChar(CJsonToStringify(tableinfo)) opts.params.tableinfo = tableinfostr + } opts.params.morecon = this.queryString this.overlay = new CCustomOverlay(opts) @@ -363,7 +365,7 @@ const { mapLayers, layerId, overlayManager } = this // 有图层,先移除 if (overlayManager[layerId]) { - mapLayers.removeLayer(overlayManager[layerId]) + mapLayers.removeLayer(overlayManager[layerId]) // 移除一次标记 delete overlayManager[layerId] } mapLayers.closePopup() @@ -422,6 +424,7 @@ if (callback) callback(id, data, bounds) }) }, + // 无用 drawFeature(id, list, bounds) { console.log('drawFeature') const { mapLayers, featureLayerManager, layerId } = this @@ -481,6 +484,7 @@ if (callback) callback(id, data) }) }, + // 无用 addMarker(id, data, icons) { const { layerInfoManager, featureLayerManager } = this var style = '' diff --git a/config/index.js b/config/index.js index cef61d9..4b3fb14 100644 --- a/config/index.js +++ b/config/index.js @@ -14,7 +14,7 @@ proxyTable: {}, // Various Dev Server settings - host: '0.0.0.0', // can be overwritten by process.env.HOST + // host: '0.0.0.0', // can be overwritten by process.env.HOST port: 8085, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined //是否自动打开浏览器 autoOpenBrowser: true, diff --git a/package.json b/package.json index d56b435..c8730cd 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,14 @@ "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", + "leaflet": "^1.9.3", + "leaflet-canvas-marker": "^0.2.0", + "leaflet-canvas-marker-xrr2021": "^1.0.2", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "npm": "^6.11.3", "nprogress": "0.2.0", + "proj4leaflet": "^1.0.2", "v-charts": "^1.19.0", "vue": "2.5.17", "vue-amap": "^0.5.9", diff --git a/src/components/CMap/components/cmap.vue b/src/components/CMap/components/cmap.vue index 808ada3..9be1788 100644 --- a/src/components/CMap/components/cmap.vue +++ b/src/components/CMap/components/cmap.vue @@ -326,6 +326,7 @@ } // 有layerid if (layerInfoManager[layerId].layerid) { + opts.params.layerid = CEncode(layerInfoManager[layerId].layerid) } else { const tableinfo = { @@ -342,6 +343,7 @@ attrfds: layerInfoManager[layerId].attrfds } const tableinfostr = CEncodeSpecialChar(CJsonToStringify(tableinfo)) opts.params.tableinfo = tableinfostr + } opts.params.morecon = this.queryString this.overlay = new CCustomOverlay(opts) @@ -363,7 +365,7 @@ const { mapLayers, layerId, overlayManager } = this // 有图层,先移除 if (overlayManager[layerId]) { - mapLayers.removeLayer(overlayManager[layerId]) + mapLayers.removeLayer(overlayManager[layerId]) // 移除一次标记 delete overlayManager[layerId] } mapLayers.closePopup() @@ -422,6 +424,7 @@ if (callback) callback(id, data, bounds) }) }, + // 无用 drawFeature(id, list, bounds) { console.log('drawFeature') const { mapLayers, featureLayerManager, layerId } = this @@ -481,6 +484,7 @@ if (callback) callback(id, data) }) }, + // 无用 addMarker(id, data, icons) { const { layerInfoManager, featureLayerManager } = this var style = '' diff --git a/src/components/leaftletMap/base/crsUtils.js b/src/components/leaftletMap/base/crsUtils.js new file mode 100644 index 0000000..ce18b37 --- /dev/null +++ b/src/components/leaftletMap/base/crsUtils.js @@ -0,0 +1,36 @@ +import L from 'leaflet' +/*eslint-disable*/ +import proj4leaflet from 'proj4leaflet' +/*eslint -enable*/ +// 定义2000坐标系CRS +const CRS_4490 = new L.Proj.CRS('EPSG:4490', '+proj=longlat +ellps=GRS80 +no_defs', { + resolutions: [ + 1.40625, + 0.703125, + 0.3515625, + 0.17578125, + 0.087890625, + 0.0439453125, + 0.02197265625, + 0.010986328125, + 0.0054931640625, + 0.00274658203125, + 0.001373291015625, + 6.866455078125E-4, + 3.4332275390625E-4, + 1.71661376953125E-4, + 8.58306884765625E-5, + 4.291534423828125E-5, + 2.1457672119140625E-5, + 1.0728836059570312E-5, + 5.364418029785156E-6, + 2.682209064925356E-6, + 1.3411045324626732E-6 + ], + origin: [-180, 90] +}) +export const crsDict = { + '4326': L.CRS.EPSG4326, // WGS84坐标系 + '3857': L.CRS.EPSG3857, // web墨卡托投影 + '4490': CRS_4490 // CGCS2000坐标系 +} diff --git a/config/index.js b/config/index.js index cef61d9..4b3fb14 100644 --- a/config/index.js +++ b/config/index.js @@ -14,7 +14,7 @@ proxyTable: {}, // Various Dev Server settings - host: '0.0.0.0', // can be overwritten by process.env.HOST + // host: '0.0.0.0', // can be overwritten by process.env.HOST port: 8085, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined //是否自动打开浏览器 autoOpenBrowser: true, diff --git a/package.json b/package.json index d56b435..c8730cd 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,14 @@ "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", + "leaflet": "^1.9.3", + "leaflet-canvas-marker": "^0.2.0", + "leaflet-canvas-marker-xrr2021": "^1.0.2", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "npm": "^6.11.3", "nprogress": "0.2.0", + "proj4leaflet": "^1.0.2", "v-charts": "^1.19.0", "vue": "2.5.17", "vue-amap": "^0.5.9", diff --git a/src/components/CMap/components/cmap.vue b/src/components/CMap/components/cmap.vue index 808ada3..9be1788 100644 --- a/src/components/CMap/components/cmap.vue +++ b/src/components/CMap/components/cmap.vue @@ -326,6 +326,7 @@ } // 有layerid if (layerInfoManager[layerId].layerid) { + opts.params.layerid = CEncode(layerInfoManager[layerId].layerid) } else { const tableinfo = { @@ -342,6 +343,7 @@ attrfds: layerInfoManager[layerId].attrfds } const tableinfostr = CEncodeSpecialChar(CJsonToStringify(tableinfo)) opts.params.tableinfo = tableinfostr + } opts.params.morecon = this.queryString this.overlay = new CCustomOverlay(opts) @@ -363,7 +365,7 @@ const { mapLayers, layerId, overlayManager } = this // 有图层,先移除 if (overlayManager[layerId]) { - mapLayers.removeLayer(overlayManager[layerId]) + mapLayers.removeLayer(overlayManager[layerId]) // 移除一次标记 delete overlayManager[layerId] } mapLayers.closePopup() @@ -422,6 +424,7 @@ if (callback) callback(id, data, bounds) }) }, + // 无用 drawFeature(id, list, bounds) { console.log('drawFeature') const { mapLayers, featureLayerManager, layerId } = this @@ -481,6 +484,7 @@ if (callback) callback(id, data) }) }, + // 无用 addMarker(id, data, icons) { const { layerInfoManager, featureLayerManager } = this var style = '' diff --git a/src/components/leaftletMap/base/crsUtils.js b/src/components/leaftletMap/base/crsUtils.js new file mode 100644 index 0000000..ce18b37 --- /dev/null +++ b/src/components/leaftletMap/base/crsUtils.js @@ -0,0 +1,36 @@ +import L from 'leaflet' +/*eslint-disable*/ +import proj4leaflet from 'proj4leaflet' +/*eslint -enable*/ +// 定义2000坐标系CRS +const CRS_4490 = new L.Proj.CRS('EPSG:4490', '+proj=longlat +ellps=GRS80 +no_defs', { + resolutions: [ + 1.40625, + 0.703125, + 0.3515625, + 0.17578125, + 0.087890625, + 0.0439453125, + 0.02197265625, + 0.010986328125, + 0.0054931640625, + 0.00274658203125, + 0.001373291015625, + 6.866455078125E-4, + 3.4332275390625E-4, + 1.71661376953125E-4, + 8.58306884765625E-5, + 4.291534423828125E-5, + 2.1457672119140625E-5, + 1.0728836059570312E-5, + 5.364418029785156E-6, + 2.682209064925356E-6, + 1.3411045324626732E-6 + ], + origin: [-180, 90] +}) +export const crsDict = { + '4326': L.CRS.EPSG4326, // WGS84坐标系 + '3857': L.CRS.EPSG3857, // web墨卡托投影 + '4490': CRS_4490 // CGCS2000坐标系 +} diff --git a/src/components/leaftletMap/leafletMap.vue b/src/components/leaftletMap/leafletMap.vue new file mode 100644 index 0000000..1df7067 --- /dev/null +++ b/src/components/leaftletMap/leafletMap.vue @@ -0,0 +1,424 @@ + + + + + + diff --git a/config/index.js b/config/index.js index cef61d9..4b3fb14 100644 --- a/config/index.js +++ b/config/index.js @@ -14,7 +14,7 @@ proxyTable: {}, // Various Dev Server settings - host: '0.0.0.0', // can be overwritten by process.env.HOST + // host: '0.0.0.0', // can be overwritten by process.env.HOST port: 8085, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined //是否自动打开浏览器 autoOpenBrowser: true, diff --git a/package.json b/package.json index d56b435..c8730cd 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,14 @@ "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", + "leaflet": "^1.9.3", + "leaflet-canvas-marker": "^0.2.0", + "leaflet-canvas-marker-xrr2021": "^1.0.2", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "npm": "^6.11.3", "nprogress": "0.2.0", + "proj4leaflet": "^1.0.2", "v-charts": "^1.19.0", "vue": "2.5.17", "vue-amap": "^0.5.9", diff --git a/src/components/CMap/components/cmap.vue b/src/components/CMap/components/cmap.vue index 808ada3..9be1788 100644 --- a/src/components/CMap/components/cmap.vue +++ b/src/components/CMap/components/cmap.vue @@ -326,6 +326,7 @@ } // 有layerid if (layerInfoManager[layerId].layerid) { + opts.params.layerid = CEncode(layerInfoManager[layerId].layerid) } else { const tableinfo = { @@ -342,6 +343,7 @@ attrfds: layerInfoManager[layerId].attrfds } const tableinfostr = CEncodeSpecialChar(CJsonToStringify(tableinfo)) opts.params.tableinfo = tableinfostr + } opts.params.morecon = this.queryString this.overlay = new CCustomOverlay(opts) @@ -363,7 +365,7 @@ const { mapLayers, layerId, overlayManager } = this // 有图层,先移除 if (overlayManager[layerId]) { - mapLayers.removeLayer(overlayManager[layerId]) + mapLayers.removeLayer(overlayManager[layerId]) // 移除一次标记 delete overlayManager[layerId] } mapLayers.closePopup() @@ -422,6 +424,7 @@ if (callback) callback(id, data, bounds) }) }, + // 无用 drawFeature(id, list, bounds) { console.log('drawFeature') const { mapLayers, featureLayerManager, layerId } = this @@ -481,6 +484,7 @@ if (callback) callback(id, data) }) }, + // 无用 addMarker(id, data, icons) { const { layerInfoManager, featureLayerManager } = this var style = '' diff --git a/src/components/leaftletMap/base/crsUtils.js b/src/components/leaftletMap/base/crsUtils.js new file mode 100644 index 0000000..ce18b37 --- /dev/null +++ b/src/components/leaftletMap/base/crsUtils.js @@ -0,0 +1,36 @@ +import L from 'leaflet' +/*eslint-disable*/ +import proj4leaflet from 'proj4leaflet' +/*eslint -enable*/ +// 定义2000坐标系CRS +const CRS_4490 = new L.Proj.CRS('EPSG:4490', '+proj=longlat +ellps=GRS80 +no_defs', { + resolutions: [ + 1.40625, + 0.703125, + 0.3515625, + 0.17578125, + 0.087890625, + 0.0439453125, + 0.02197265625, + 0.010986328125, + 0.0054931640625, + 0.00274658203125, + 0.001373291015625, + 6.866455078125E-4, + 3.4332275390625E-4, + 1.71661376953125E-4, + 8.58306884765625E-5, + 4.291534423828125E-5, + 2.1457672119140625E-5, + 1.0728836059570312E-5, + 5.364418029785156E-6, + 2.682209064925356E-6, + 1.3411045324626732E-6 + ], + origin: [-180, 90] +}) +export const crsDict = { + '4326': L.CRS.EPSG4326, // WGS84坐标系 + '3857': L.CRS.EPSG3857, // web墨卡托投影 + '4490': CRS_4490 // CGCS2000坐标系 +} diff --git a/src/components/leaftletMap/leafletMap.vue b/src/components/leaftletMap/leafletMap.vue new file mode 100644 index 0000000..1df7067 --- /dev/null +++ b/src/components/leaftletMap/leafletMap.vue @@ -0,0 +1,424 @@ + + + + + + diff --git a/src/main.js b/src/main.js index 5b3d3ac..44228ae 100644 --- a/src/main.js +++ b/src/main.js @@ -14,7 +14,7 @@ import '@/icons' // icon import '@/permission' // permission control - +// import 'leaflet-canvas-marker' /** * This project originally used easy-mock to simulate data, * but its official service is very unstable, diff --git a/config/index.js b/config/index.js index cef61d9..4b3fb14 100644 --- a/config/index.js +++ b/config/index.js @@ -14,7 +14,7 @@ proxyTable: {}, // Various Dev Server settings - host: '0.0.0.0', // can be overwritten by process.env.HOST + // host: '0.0.0.0', // can be overwritten by process.env.HOST port: 8085, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined //是否自动打开浏览器 autoOpenBrowser: true, diff --git a/package.json b/package.json index d56b435..c8730cd 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,14 @@ "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", + "leaflet": "^1.9.3", + "leaflet-canvas-marker": "^0.2.0", + "leaflet-canvas-marker-xrr2021": "^1.0.2", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "npm": "^6.11.3", "nprogress": "0.2.0", + "proj4leaflet": "^1.0.2", "v-charts": "^1.19.0", "vue": "2.5.17", "vue-amap": "^0.5.9", diff --git a/src/components/CMap/components/cmap.vue b/src/components/CMap/components/cmap.vue index 808ada3..9be1788 100644 --- a/src/components/CMap/components/cmap.vue +++ b/src/components/CMap/components/cmap.vue @@ -326,6 +326,7 @@ } // 有layerid if (layerInfoManager[layerId].layerid) { + opts.params.layerid = CEncode(layerInfoManager[layerId].layerid) } else { const tableinfo = { @@ -342,6 +343,7 @@ attrfds: layerInfoManager[layerId].attrfds } const tableinfostr = CEncodeSpecialChar(CJsonToStringify(tableinfo)) opts.params.tableinfo = tableinfostr + } opts.params.morecon = this.queryString this.overlay = new CCustomOverlay(opts) @@ -363,7 +365,7 @@ const { mapLayers, layerId, overlayManager } = this // 有图层,先移除 if (overlayManager[layerId]) { - mapLayers.removeLayer(overlayManager[layerId]) + mapLayers.removeLayer(overlayManager[layerId]) // 移除一次标记 delete overlayManager[layerId] } mapLayers.closePopup() @@ -422,6 +424,7 @@ if (callback) callback(id, data, bounds) }) }, + // 无用 drawFeature(id, list, bounds) { console.log('drawFeature') const { mapLayers, featureLayerManager, layerId } = this @@ -481,6 +484,7 @@ if (callback) callback(id, data) }) }, + // 无用 addMarker(id, data, icons) { const { layerInfoManager, featureLayerManager } = this var style = '' diff --git a/src/components/leaftletMap/base/crsUtils.js b/src/components/leaftletMap/base/crsUtils.js new file mode 100644 index 0000000..ce18b37 --- /dev/null +++ b/src/components/leaftletMap/base/crsUtils.js @@ -0,0 +1,36 @@ +import L from 'leaflet' +/*eslint-disable*/ +import proj4leaflet from 'proj4leaflet' +/*eslint -enable*/ +// 定义2000坐标系CRS +const CRS_4490 = new L.Proj.CRS('EPSG:4490', '+proj=longlat +ellps=GRS80 +no_defs', { + resolutions: [ + 1.40625, + 0.703125, + 0.3515625, + 0.17578125, + 0.087890625, + 0.0439453125, + 0.02197265625, + 0.010986328125, + 0.0054931640625, + 0.00274658203125, + 0.001373291015625, + 6.866455078125E-4, + 3.4332275390625E-4, + 1.71661376953125E-4, + 8.58306884765625E-5, + 4.291534423828125E-5, + 2.1457672119140625E-5, + 1.0728836059570312E-5, + 5.364418029785156E-6, + 2.682209064925356E-6, + 1.3411045324626732E-6 + ], + origin: [-180, 90] +}) +export const crsDict = { + '4326': L.CRS.EPSG4326, // WGS84坐标系 + '3857': L.CRS.EPSG3857, // web墨卡托投影 + '4490': CRS_4490 // CGCS2000坐标系 +} diff --git a/src/components/leaftletMap/leafletMap.vue b/src/components/leaftletMap/leafletMap.vue new file mode 100644 index 0000000..1df7067 --- /dev/null +++ b/src/components/leaftletMap/leafletMap.vue @@ -0,0 +1,424 @@ + + + + + + diff --git a/src/main.js b/src/main.js index 5b3d3ac..44228ae 100644 --- a/src/main.js +++ b/src/main.js @@ -14,7 +14,7 @@ import '@/icons' // icon import '@/permission' // permission control - +// import 'leaflet-canvas-marker' /** * This project originally used easy-mock to simulate data, * but its official service is very unstable, diff --git a/src/utils/index.js b/src/utils/index.js index f607910..375dd2b 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -296,3 +296,34 @@ export function uniqueArr(arr) { return Array.from(new Set(arr)) } + +const isType = function(type) { + return function(arg) { + return Object.prototype.toString.call(arg) === `[object ${type}]` + } +} + +export const isFunction = isType('Function') + +export const isObject = isType('Object') + +export const isString = isType('String') + +export const isArray = isType('Array') + +export const isDate = isType('Date') + +// 深拷贝 +export function deepCopy(data) { + if (!Array.isArray(data) && !isObject(data)) { + return data + } else if (Array.isArray(data)) { + return data.map(item => deepCopy(item)) + } else if (isObject(data)) { + let ret = {} + Object.keys(data).forEach(key => { + ret[key] = deepCopy(data[key]) + }) + return ret + } +} diff --git a/config/index.js b/config/index.js index cef61d9..4b3fb14 100644 --- a/config/index.js +++ b/config/index.js @@ -14,7 +14,7 @@ proxyTable: {}, // Various Dev Server settings - host: '0.0.0.0', // can be overwritten by process.env.HOST + // host: '0.0.0.0', // can be overwritten by process.env.HOST port: 8085, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined //是否自动打开浏览器 autoOpenBrowser: true, diff --git a/package.json b/package.json index d56b435..c8730cd 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,14 @@ "event-source-polyfill": "^1.0.5", "js-cookie": "2.2.0", "jsencrypt": "^3.0.0-rc.1", + "leaflet": "^1.9.3", + "leaflet-canvas-marker": "^0.2.0", + "leaflet-canvas-marker-xrr2021": "^1.0.2", "mockjs": "1.0.1-beta3", "normalize.css": "7.0.0", "npm": "^6.11.3", "nprogress": "0.2.0", + "proj4leaflet": "^1.0.2", "v-charts": "^1.19.0", "vue": "2.5.17", "vue-amap": "^0.5.9", diff --git a/src/components/CMap/components/cmap.vue b/src/components/CMap/components/cmap.vue index 808ada3..9be1788 100644 --- a/src/components/CMap/components/cmap.vue +++ b/src/components/CMap/components/cmap.vue @@ -326,6 +326,7 @@ } // 有layerid if (layerInfoManager[layerId].layerid) { + opts.params.layerid = CEncode(layerInfoManager[layerId].layerid) } else { const tableinfo = { @@ -342,6 +343,7 @@ attrfds: layerInfoManager[layerId].attrfds } const tableinfostr = CEncodeSpecialChar(CJsonToStringify(tableinfo)) opts.params.tableinfo = tableinfostr + } opts.params.morecon = this.queryString this.overlay = new CCustomOverlay(opts) @@ -363,7 +365,7 @@ const { mapLayers, layerId, overlayManager } = this // 有图层,先移除 if (overlayManager[layerId]) { - mapLayers.removeLayer(overlayManager[layerId]) + mapLayers.removeLayer(overlayManager[layerId]) // 移除一次标记 delete overlayManager[layerId] } mapLayers.closePopup() @@ -422,6 +424,7 @@ if (callback) callback(id, data, bounds) }) }, + // 无用 drawFeature(id, list, bounds) { console.log('drawFeature') const { mapLayers, featureLayerManager, layerId } = this @@ -481,6 +484,7 @@ if (callback) callback(id, data) }) }, + // 无用 addMarker(id, data, icons) { const { layerInfoManager, featureLayerManager } = this var style = '' diff --git a/src/components/leaftletMap/base/crsUtils.js b/src/components/leaftletMap/base/crsUtils.js new file mode 100644 index 0000000..ce18b37 --- /dev/null +++ b/src/components/leaftletMap/base/crsUtils.js @@ -0,0 +1,36 @@ +import L from 'leaflet' +/*eslint-disable*/ +import proj4leaflet from 'proj4leaflet' +/*eslint -enable*/ +// 定义2000坐标系CRS +const CRS_4490 = new L.Proj.CRS('EPSG:4490', '+proj=longlat +ellps=GRS80 +no_defs', { + resolutions: [ + 1.40625, + 0.703125, + 0.3515625, + 0.17578125, + 0.087890625, + 0.0439453125, + 0.02197265625, + 0.010986328125, + 0.0054931640625, + 0.00274658203125, + 0.001373291015625, + 6.866455078125E-4, + 3.4332275390625E-4, + 1.71661376953125E-4, + 8.58306884765625E-5, + 4.291534423828125E-5, + 2.1457672119140625E-5, + 1.0728836059570312E-5, + 5.364418029785156E-6, + 2.682209064925356E-6, + 1.3411045324626732E-6 + ], + origin: [-180, 90] +}) +export const crsDict = { + '4326': L.CRS.EPSG4326, // WGS84坐标系 + '3857': L.CRS.EPSG3857, // web墨卡托投影 + '4490': CRS_4490 // CGCS2000坐标系 +} diff --git a/src/components/leaftletMap/leafletMap.vue b/src/components/leaftletMap/leafletMap.vue new file mode 100644 index 0000000..1df7067 --- /dev/null +++ b/src/components/leaftletMap/leafletMap.vue @@ -0,0 +1,424 @@ + + + + + + diff --git a/src/main.js b/src/main.js index 5b3d3ac..44228ae 100644 --- a/src/main.js +++ b/src/main.js @@ -14,7 +14,7 @@ import '@/icons' // icon import '@/permission' // permission control - +// import 'leaflet-canvas-marker' /** * This project originally used easy-mock to simulate data, * but its official service is very unstable, diff --git a/src/utils/index.js b/src/utils/index.js index f607910..375dd2b 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -296,3 +296,34 @@ export function uniqueArr(arr) { return Array.from(new Set(arr)) } + +const isType = function(type) { + return function(arg) { + return Object.prototype.toString.call(arg) === `[object ${type}]` + } +} + +export const isFunction = isType('Function') + +export const isObject = isType('Object') + +export const isString = isType('String') + +export const isArray = isType('Array') + +export const isDate = isType('Date') + +// 深拷贝 +export function deepCopy(data) { + if (!Array.isArray(data) && !isObject(data)) { + return data + } else if (Array.isArray(data)) { + return data.map(item => deepCopy(item)) + } else if (isObject(data)) { + let ret = {} + Object.keys(data).forEach(key => { + ret[key] = deepCopy(data[key]) + }) + return ret + } +} diff --git a/src/views/overview/overview_cmap.vue b/src/views/overview/overview_cmap.vue index c30bcaf..dadc1c0 100644 --- a/src/views/overview/overview_cmap.vue +++ b/src/views/overview/overview_cmap.vue @@ -66,23 +66,62 @@
- + + + + + + + +
+ + + diff --git a/src/main.js b/src/main.js index 5b3d3ac..44228ae 100644 --- a/src/main.js +++ b/src/main.js @@ -14,7 +14,7 @@ import '@/icons' // icon import '@/permission' // permission control - +// import 'leaflet-canvas-marker' /** * This project originally used easy-mock to simulate data, * but its official service is very unstable, diff --git a/src/utils/index.js b/src/utils/index.js index f607910..375dd2b 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -296,3 +296,34 @@ export function uniqueArr(arr) { return Array.from(new Set(arr)) } + +const isType = function(type) { + return function(arg) { + return Object.prototype.toString.call(arg) === `[object ${type}]` + } +} + +export const isFunction = isType('Function') + +export const isObject = isType('Object') + +export const isString = isType('String') + +export const isArray = isType('Array') + +export const isDate = isType('Date') + +// 深拷贝 +export function deepCopy(data) { + if (!Array.isArray(data) && !isObject(data)) { + return data + } else if (Array.isArray(data)) { + return data.map(item => deepCopy(item)) + } else if (isObject(data)) { + let ret = {} + Object.keys(data).forEach(key => { + ret[key] = deepCopy(data[key]) + }) + return ret + } +} diff --git a/src/views/overview/overview_cmap.vue b/src/views/overview/overview_cmap.vue index c30bcaf..dadc1c0 100644 --- a/src/views/overview/overview_cmap.vue +++ b/src/views/overview/overview_cmap.vue @@ -66,23 +66,62 @@
- + + + + + + + +
+ + + diff --git a/src/main.js b/src/main.js index 5b3d3ac..44228ae 100644 --- a/src/main.js +++ b/src/main.js @@ -14,7 +14,7 @@ import '@/icons' // icon import '@/permission' // permission control - +// import 'leaflet-canvas-marker' /** * This project originally used easy-mock to simulate data, * but its official service is very unstable, diff --git a/src/utils/index.js b/src/utils/index.js index f607910..375dd2b 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -296,3 +296,34 @@ export function uniqueArr(arr) { return Array.from(new Set(arr)) } + +const isType = function(type) { + return function(arg) { + return Object.prototype.toString.call(arg) === `[object ${type}]` + } +} + +export const isFunction = isType('Function') + +export const isObject = isType('Object') + +export const isString = isType('String') + +export const isArray = isType('Array') + +export const isDate = isType('Date') + +// 深拷贝 +export function deepCopy(data) { + if (!Array.isArray(data) && !isObject(data)) { + return data + } else if (Array.isArray(data)) { + return data.map(item => deepCopy(item)) + } else if (isObject(data)) { + let ret = {} + Object.keys(data).forEach(key => { + ret[key] = deepCopy(data[key]) + }) + return ret + } +} diff --git a/src/views/overview/overview_cmap.vue b/src/views/overview/overview_cmap.vue index c30bcaf..dadc1c0 100644 --- a/src/views/overview/overview_cmap.vue +++ b/src/views/overview/overview_cmap.vue @@ -66,23 +66,62 @@
- + + + + + + + +
+ + + diff --git a/src/main.js b/src/main.js index 5b3d3ac..44228ae 100644 --- a/src/main.js +++ b/src/main.js @@ -14,7 +14,7 @@ import '@/icons' // icon import '@/permission' // permission control - +// import 'leaflet-canvas-marker' /** * This project originally used easy-mock to simulate data, * but its official service is very unstable, diff --git a/src/utils/index.js b/src/utils/index.js index f607910..375dd2b 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -296,3 +296,34 @@ export function uniqueArr(arr) { return Array.from(new Set(arr)) } + +const isType = function(type) { + return function(arg) { + return Object.prototype.toString.call(arg) === `[object ${type}]` + } +} + +export const isFunction = isType('Function') + +export const isObject = isType('Object') + +export const isString = isType('String') + +export const isArray = isType('Array') + +export const isDate = isType('Date') + +// 深拷贝 +export function deepCopy(data) { + if (!Array.isArray(data) && !isObject(data)) { + return data + } else if (Array.isArray(data)) { + return data.map(item => deepCopy(item)) + } else if (isObject(data)) { + let ret = {} + Object.keys(data).forEach(key => { + ret[key] = deepCopy(data[key]) + }) + return ret + } +} diff --git a/src/views/overview/overview_cmap.vue b/src/views/overview/overview_cmap.vue index c30bcaf..dadc1c0 100644 --- a/src/views/overview/overview_cmap.vue +++ b/src/views/overview/overview_cmap.vue @@ -66,23 +66,62 @@
- + + + + + + + +