新建工单,地图坐标保存,坐标系转换处理;
详情中地图坐标系转换去除;
2 files modified
1 files added
| | |
| | | |
| | | if (!lng || !lat) return |
| | | |
| | | let [newLng, newLat] = DC.CoordTransform.GCJ02ToWGS84(lng, lat) |
| | | |
| | | let point = new DC.Point(new DC.Position(newLng, newLat)) |
| | | let point = new DC.Point(new DC.Position(lng, lat)) |
| | | pointLayer.addOverlay(point) |
| | | |
| | | window.$viewer?.zoomTo(pointLayer) |
| | |
| | | const positionStr = data.map(item => { |
| | | const [lng, lat] = item |
| | | |
| | | let [newLng, newLat] = DC.CoordTransform.GCJ02ToWGS84(lng, lat) |
| | | |
| | | return `${newLng}, ${newLat}` |
| | | return `${lng}, ${lat}` |
| | | }).join(';') |
| | | |
| | | let polyline = new DC.Polyline(positionStr) |
| New file |
| | |
| | | /* |
| | | * @Author: GuLiMmo 2820890765@qq.com |
| | | * @Date: 2024-06-12 13:51:57 |
| | | * @LastEditors: GuLiMmo 2820890765@qq.com |
| | | * @LastEditTime: 2024-06-12 13:54:00 |
| | | * @FilePath: /bigScreen/src/utils/coordinateTransformation.js |
| | | * @Description: |
| | | * Copyright (c) 2024 by GuLiMmo, All Rights Reserved. |
| | | */ |
| | | const PI = Math.PI; |
| | | const a = 6378245.0; |
| | | const ee = 0.00669342162296594323; |
| | | |
| | | export function wgs84ToGcj02(lng, lat) { |
| | | if (out_of_china(lng, lat)) { |
| | | return [lng, lat]; |
| | | } else { |
| | | var dlat = transformlat(lng - 105.0, lat - 35.0); |
| | | var dlng = transformlng(lng - 105.0, lat - 35.0); |
| | | var radlat = (lat / 180.0) * PI; |
| | | var magic = Math.sin(radlat); |
| | | magic = 1 - ee * magic * magic; |
| | | var sqrtmagic = Math.sqrt(magic); |
| | | dlat = (dlat * 180.0) / (((a * (1 - ee)) / (magic * sqrtmagic)) * PI); |
| | | dlng = (dlng * 180.0) / ((a / sqrtmagic) * Math.cos(radlat) * PI); |
| | | var mglat = lat + dlat; |
| | | var mglng = lng + dlng; |
| | | return [mglng, mglat]; |
| | | } |
| | | } |
| | | |
| | | export function gcj02ToWgs84(lng, lat) { |
| | | if (out_of_china(lng, lat)) { |
| | | return [lng, lat]; |
| | | } else { |
| | | var dlat = transformlat(lng - 105.0, lat - 35.0); |
| | | var dlng = transformlng(lng - 105.0, lat - 35.0); |
| | | var radlat = (lat / 180.0) * PI; |
| | | var magic = Math.sin(radlat); |
| | | magic = 1 - ee * magic * magic; |
| | | var sqrtmagic = Math.sqrt(magic); |
| | | dlat = (dlat * 180.0) / (((a * (1 - ee)) / (magic * sqrtmagic)) * PI); |
| | | dlng = (dlng * 180.0) / ((a / sqrtmagic) * Math.cos(radlat) * PI); |
| | | var mglat = lat + dlat; |
| | | var mglng = lng + dlng; |
| | | return [lng * 2 - mglng, lat * 2 - mglat]; |
| | | } |
| | | } |
| | | |
| | | function transformlat(lng, lat) { |
| | | var ret = |
| | | -100.0 + |
| | | 2.0 * lng + |
| | | 3.0 * lat + |
| | | 0.2 * lat * lat + |
| | | 0.1 * lng * lat + |
| | | 0.2 * Math.sqrt(Math.abs(lng)); |
| | | ret += |
| | | ((20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * |
| | | 2.0) / |
| | | 3.0; |
| | | ret += |
| | | ((20.0 * Math.sin(lat * PI) + 40.0 * Math.sin((lat / 3.0) * PI)) * |
| | | 2.0) / |
| | | 3.0; |
| | | ret += |
| | | ((160.0 * Math.sin((lat / 12.0) * PI) + |
| | | 320 * Math.sin((lat * PI) / 30.0)) * |
| | | 2.0) / |
| | | 3.0; |
| | | return ret; |
| | | } |
| | | |
| | | function transformlng(lng, lat) { |
| | | var ret = |
| | | 300.0 + |
| | | lng + |
| | | 2.0 * lat + |
| | | 0.1 * lng * lng + |
| | | 0.1 * lng * lat + |
| | | 0.1 * Math.sqrt(Math.abs(lng)); |
| | | ret += |
| | | ((20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * |
| | | 2.0) / |
| | | 3.0; |
| | | ret += |
| | | ((20.0 * Math.sin(lng * PI) + 40.0 * Math.sin((lng / 3.0) * PI)) * |
| | | 2.0) / |
| | | 3.0; |
| | | ret += |
| | | ((150.0 * Math.sin((lng / 12.0) * PI) + |
| | | 300.0 * Math.sin((lng / 30.0) * PI)) * |
| | | 2.0) / |
| | | 3.0; |
| | | return ret; |
| | | } |
| | | |
| | | // 判断是否在国内,不在国内则不做偏移 |
| | | function out_of_china(lng, lat) { |
| | | return ( |
| | | lng < 72.004 || lng > 137.8347 || lat < 0.8293 || lat > 55.8271 || false |
| | | ); |
| | | } |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { gcj02ToWgs84, wgs84ToGcj02 } from '@/utils/coordinateTransformation' |
| | | import { getList, createTicket, getTicketInfo, flowEvent, getstatusCount, getStepInfo } from '@/api/tickets/ticket' |
| | | import { export_json_to_excel } from '@/utils/exportExcel' |
| | | import geoJson from '@/assets/geoJson.json' |
| | |
| | | return |
| | | } |
| | | |
| | | let [lng, lat] = this.disposeLocation(true, this.form) |
| | | |
| | | const submitData = { |
| | | eventName: this.form.name, |
| | | content: this.form.content, |
| | | workType: "1", |
| | | longitude: String(this.form.location[0]), |
| | | latitude: String(this.form.location[1]), |
| | | longitude: lng, |
| | | latitude: lat, |
| | | address: this.form.address, |
| | | workOrderTypeDictKey: this.form.type, |
| | | aiType: Array.isArray(this.form.algorithm) ? this.form.algorithm : [this.form.algorithm], // 传数组 |
| | |
| | | if (!handlerValue || handlerValue === '未分配') { |
| | | handlerValue = undefined |
| | | } |
| | | |
| | | let [lng, lat] = this.disposeLocation(true, this.form) |
| | | |
| | | const submitData = { |
| | | id: this.form.id, |
| | | eventName: this.form.name || undefined, |
| | | content: this.form.content || undefined, |
| | | workType: "1", |
| | | longitude: this.form.location?.[0] ? String(this.form.location[0]) : undefined, |
| | | latitude: this.form.location?.[1] ? String(this.form.location[1]) : undefined, |
| | | longitude: lng, |
| | | latitude: lat, |
| | | address: this.form.address || undefined, |
| | | workOrderTypeDictKey: this.form.type || undefined, |
| | | aiType: this.form.algorithm && this.form.algorithm.length > 0 |
| | |
| | | photos: [], |
| | | } |
| | | |
| | | this.form.location = Array.isArray(row.location) && row.location.length >= 2 |
| | | ? [ |
| | | Number(row.location[0]), |
| | | Number(row.location[1]), |
| | | let curLocation = [] |
| | | |
| | | if (Array.isArray(row.location) && row.location.length >= 2) { |
| | | let [lng, lat] = this.disposeLocation(false, row) |
| | | |
| | | curLocation = [ |
| | | lng, |
| | | lat, |
| | | row.location[2] || row.address || '' |
| | | ] |
| | | : [] |
| | | } |
| | | |
| | | this.form.location = curLocation |
| | | this.form.address = this.form.location[2] || '' |
| | | // 设置地图中心点 |
| | | if (Array.isArray(this.form.location) && this.form.location.length >= 2) { |
| | |
| | | }) |
| | | |
| | | this.dialogVisible = true |
| | | }, |
| | | |
| | | // 添加数据监听以确保算法数据的响应性 |
| | | watch: { |
| | | 'form.algorithm': { |
| | | handler (newVal) { |
| | | console.log('算法值变化:', newVal) |
| | | }, |
| | | deep: true |
| | | } |
| | | }, |
| | | |
| | | // 添加删除方法 |
| | |
| | | if (lastDot === -1) return url |
| | | return url.slice(0, lastDot) + '_show' + url.slice(lastDot) |
| | | }, |
| | | |
| | | /** |
| | | * 坐标转换方法处理 |
| | | * @param goWgs84 是否由国测转换到84,默认false----由84转换到国测 |
| | | */ |
| | | disposeLocation (goWgs84 = false, data) { |
| | | let lng, lat |
| | | if (goWgs84) { |
| | | lng = data.location?.[0] ? String(data.location[0]) : undefined |
| | | lat = data.location?.[1] ? String(data.location[1]) : undefined |
| | | |
| | | if (lng && lat) { |
| | | [lng, lat] = gcj02ToWgs84(Number(lng), Number(lat)) |
| | | } |
| | | } else { |
| | | lng = Number(data.location[0]) |
| | | lat = Number(data.location[1]) |
| | | |
| | | if (lng && lat) { |
| | | [lng, lat] = wgs84ToGcj02(Number(lng), Number(lat)) |
| | | } |
| | | } |
| | | |
| | | return [String(lng), String(lat)] |
| | | } |
| | | }, |
| | | } |
| | | </script> |