From da89682920810d20d825294ee3669e6be9a8f477 Mon Sep 17 00:00:00 2001
From: shuishen <1109946754@qq.com>
Date: Tue, 18 Apr 2023 20:13:21 +0800
Subject: [PATCH] 电子沙盘数据地图定位
---
src/utils/turfPolygon.js | 96 ++++++++++++++++++++++++++++++++++++++---------
1 files changed, 77 insertions(+), 19 deletions(-)
diff --git a/src/utils/turfPolygon.js b/src/utils/turfPolygon.js
index 504f83f..1ccc6ee 100644
--- a/src/utils/turfPolygon.js
+++ b/src/utils/turfPolygon.js
@@ -2,7 +2,7 @@
* @Author: shuishen 1109946754@qq.com
* @Date: 2023-03-31 10:52:25
* @LastEditors: shuishen 1109946754@qq.com
- * @LastEditTime: 2023-04-04 15:55:33
+ * @LastEditTime: 2023-04-18 20:13:04
* @FilePath: \srs-police-affairs\src\utils\turfPolygon.js
* @Description:
*
@@ -10,31 +10,91 @@
*/
import * as turf from '@turf/turf'
-export const computerCapacity = (data, type) => {
- if (type == 'region') {
- console.log('computerCapacity', data)
- const pointArr = data.reduce((pre, cur) => {
- cur.position && JSON.parse(cur.position).coordinates[0][0].forEach(item => {
- console.log(item, 959)
- item[0] && item[1] && pre.push(turf.point(item))
- })
+function getAllRegionCenter (data) {
+ let arr = []
- return pre
- }, [])
+ data.forEach(item => {
+ if (item.position && item.position.length > 0) {
+ arr.push(getRegionCenter(item.position))
+ }
+ })
+
+ arr.push(arr[0])
+
+ if (arr.length == 1) {
+ return arr[0]
+ } else if (arr.length == 2) {
+
+ return turf.centroid(turf.midpoint(turf.point(arr[0]), turf.point(arr[1]))).geometry.coordinates
+ } else {
+ arr.push(arr[0])
+
+ return turf.centroid(turf.polygon([arr])).geometry.coordinates
+ }
+}
+
+function getRegionCenter (params) {
+ let arr = []
+
+ params.forEach(areaArray => {
+ JSON.parse(areaArray).coordinates.forEach(item => {
+ arr.push(turf.centroid(turf.polygon([item[0]])).geometry.coordinates)
+ })
+ })
+
+ if (arr.length == 1) {
+ return arr[0]
+ } else if (arr.length == 2) {
+
+ return turf.centroid(turf.midpoint(turf.point(arr[0]), turf.point(arr[1]))).geometry.coordinates
+ } else {
+ arr.push(arr[0])
+
+ return turf.centroid(turf.polygon([arr])).geometry.coordinates
+ }
+}
- const features = turf.featureCollection(pointArr)
- const scope = turf.envelope(features).bbox
+export const computerCapacity = (data, type = '') => {
- const poly = turf.polygon([[[scope[0], scope[1]], [scope[0], scope[3]], [scope[2], scope[1]], [scope[2], scope[3]]]])
+ if (type != '') {
- const scaledPoly = turf.transformScale(poly, 3)
+ const center = getAllRegionCenter(data)
- console.log(scope, scaledPoly, 5555)
+ if (type == 'all') {
+
+ global.viewer.flyToPosition(
+ new global.DC.Position(
+ Number(center[0] + 0.03),
+ Number(center[1] - 0.30),
+ Number(36000),
+ Number(-3),
+ Number(-45),
+ Number(0)
+ ),
+ function () { },
+ 3
+ )
+
+ } else {
+
+ global.viewer.flyToPosition(
+ new global.DC.Position(
+ Number(center[0] + 0.0046),
+ Number(center[1] - 0.04),
+ Number(4000),
+ Number(-3),
+ Number(-45),
+ Number(0)
+ ),
+ function () { },
+ 3
+ )
+
+ }
} else {
let pointArr = []
- console.log('data', data)
data.forEach(item => {
if (item.longitude && item.latitude) {
pointArr.push(turf.point([item.longitude, item.latitude]))
@@ -50,8 +110,6 @@
const features = turf.featureCollection(pointArr)
const scope = turf.envelope(features).bbox
-
- console.log(scope, 5555)
// const poly = turf.polygon([[[0, 29], [3.5, 29], [2.5, 32], [0, 29]]])
--
Gitblit v1.9.3