围栏中心点

2023-12-26 19:28
文章标签 中心点 围栏

本文主要是介绍围栏中心点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

后端返回的数据格式是
[{height: 0,lat: 30.864277169098443,lng:114.35252972024682}{height: 1,lat: 30.864277169098443,lng:114.35252972024682}.........]我们要转换成 
33.00494857612568,112.53886564762979;33.00307854503083,112.53728973842954;33.00170296814311,112.54292870618883;33.00424731914073,112.54441885173947;33.00493059521884,112.5388549273066转换代码 const formattePoints = this.saveFrom.electro_data.map(point => `${point.lat},${point.lng};`).join('')

算法
//参数数组points的每一项为每一个点的:纬度,经度//如 points = ['30.86660,104.390740', '30.861961,104.386963', '30.842287,104.388079', '点的纬度,点的经度'……];//返回中心点的数组[纬度,精度]getPointsCenter(points) {var point_num = points.length; //坐标点个数var X = 0, Y = 0, Z = 0;for (let i = 0; i < points.length; i++) {if (points[i] == '') {continue;}let point = points[i].split(',');var lat, lng, x, y, z;lat = parseFloat(point[0]) * Math.PI / 180;lng = parseFloat(point[1]) * Math.PI / 180;x = Math.cos(lat) * Math.cos(lng);y = Math.cos(lat) * Math.sin(lng);z = Math.sin(lat);X += x;Y += y;Z += z;}X = X / point_num;Y = Y / point_num;Z = Z / point_num;var tmp_lng = Math.atan2(Y, X);var tmp_lat = Math.atan2(Z, Math.sqrt(X * X + Y * Y));return [tmp_lat * 180 / Math.PI, tmp_lng * 180 / Math.PI];},调用 
var arr = formattePoints.split(';')var tmp_center = this.getPointsCenter(arr);console.log(tmp_center, "tmp_center");

初始化地图和围栏调用

 initMap() {// 初始化地图map = new TMap.Map('container', {zoom: 17, // 设置地图缩放级别center: new TMap.LatLng(this.creactLat, this.creactLng) // 设置地图中心点坐标// center: new TMap.LatLng(40.04019000341765, 116.27446815226199) // 设置地图中心点坐标});// 初始化几何图形及编辑器var polygon = new TMap.MultiPolygon({map: map,});editor = new TMap.tools.GeometryEditor({// TMap.tools.GeometryEditor 文档地址:https://lbs.qq.com/webApi/javascriptGL/glDoc/glDocEditormap: map, // 编辑器绑定的地图对象overlayList: [// 可编辑图层 文档地址:https://lbs.qq.com/webApi/javascriptGL/glDoc/glDocEditor#4{overlay: polygon,id: 'polygon',},{overlay: new TMap.MultiPolygon({map,styles: {highlight: new TMap.PolygonStyle({color: 'rgba(255, 255, 0, 0.6)'})},geometries: [{paths: this.simplePath},]}),// id: 'polygon',selectedStyleId: 'highlight'}],geometries: [ //{paths: this.simplePath},],actionMode: TMap.tools.constants.EDITOR_ACTION.DRAW, // 编辑器的工作模式activeOverlayId: 'polygon', // 激活图层snappable: true, // 开启吸附});// 监听绘制结束事件,获取绘制几何图形editor.on('draw_complete', (geometry) => {// 判断当前处于编辑状态的图层id是否是overlayList中id为rectangle(矩形)图层if (editor.getActiveOverlay().id === 'polygon') {// 获取矩形顶点坐标var id = geometry.id;var geo = polygon.geometries.filter(function (item) {return item.id === id;});console.log('绘制的矩形定位的坐标:', geo[0].paths);// localStorage.setItem('coordinate', JSON.stringify(geo[0].paths))this.coordinate = geo[0].pathsthis.saveFrom.electro_data = geo[0].paths// if (this.coordinate) {//   this.coordinate.forEach(item => {//     console.log(item);//     this.simplePath.push(new TMap.LatLng(item.lat, item.lng))//   });// }}// 围栏中心点const formattePoints = this.saveFrom.electro_data.map(point => `${point.lat},${point.lng};`).join('')console.log(formattePoints, 'formattePoints')var arr = formattePoints.split(';')var tmp_center = this.getPointsCenter(arr);console.log(tmp_center, "tmp_center");this.saveFrom.center_lat = tmp_center[0]this.saveFrom.center_lng = tmp_center[1]});},

 

这篇关于围栏中心点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/540566

相关文章

8.12 矢量图层面要素单一符号使用二(仅渲染中心点)

文章目录 前言仅渲染中心点(Centroid fill)QGis设置面符号为仅渲染中心点(Centroid fill)二次开发代码实现仅渲染中心点(Centroid fill) 总结 前言 本章介绍矢量图层线要素单一符号中仅渲染中心点(Centroid fill)的使用说明:文章中的示例代码均来自开源项目qgis_cpp_api_apps 仅渲染中心点(Centroid fil

View旋转中心点

改变View旋转中心点 在对Android的View对象使用setRotation方法时,View默认的锚点是其中心位置 属性动画怎么绕原点旋转? ObjectAnimator oa = ObjectAnimator.ofFloat(iv, “rotation”, new float[]{0,180}); 这个默认是绕中心点的 在Animator中需要通过View.setPivotX和V

使用opencv在图像上画带刻度线的十字线,以图像中心点为0点

使用OpenCV在图像上绘制带刻度线的十字线,可以通过以下步骤实现。我们将首先找到图像的中心点,然后绘制水平和垂直线,并在这些线的适当位置绘制刻度线。以下是详细的C++代码示例: #include<opencv2\opencv.hpp>//画十字标注线带刻度线,以图像中心点为0点void DrawCross_new(cv::Mat& mat, double dFactor){cv::Sc

机器视觉——找到物块中心点

首先先介绍一下我用的是HALCON中的HDevelop软件。 大家下载好软件后可以测试一下: 在程序编辑器窗口中输入下面指令: read_image(Image,'monkey') 那么如果出现这样的图片,说明是没有问题的 那么本次编程采用的是下面这张图片 我们要达到的效果是这样的 其实代码很简单,我不过多说明 *读图*以相对路径方式*这里的代码叫算子read_i

乡镇围栏数据存储ES实践

空白的是ES渲染的问题,放大后看到几乎没有丢失数据 1. ES索引建立 PUT /town_fence{"settings": {"number_of_shards": 1},"mappings": {"properties": {"province": {"type": "keyword"},"city": {"type": "keyword"},"district": {"type"

根据多个坐标经纬度获取到中心点的经纬度,scala语言

文章目录 前言scala 代码 总结 前言 Scala 语言 通过多个经纬度坐标点, 计算出中心点, 这里使用的是 Scala 语言,其他的语言需要自行转换。求出来的并不是原有的点,而是原有点的中心位置的点。 scala 代码 package com.dw.process.midimport java.lang.Double.parseDoubleimport sca

地理围栏算法解析(Geo-fencing)

地理围栏算法解析       http://www.cnblogs.com/LBSer/p/4471742.html       地理围栏(Geo-fencing)是LBS的一种应用,就是用一个虚拟的栅栏围出一个虚拟地理边界,当手机进入、离开某个特定地理区域,或在该区域内活动时,手机可以接收自动通知和警告。如下图所示,假设地图上有三个商场,当用户进入某个商场的时候,手机自动收到相应商场发

transform-origin设置变形中心点

HTML代码: <div class="box"></div> CSS代码: .box {width: 100px;height: 100px;background-color: purple;margin-left: 150px;transition: all .5s;/*transform-origin: center; 默认盒子的正中心为旋转中心点*//*transform-orig

YOLOv8得到物体的坐标中心点信息

因为我通过摄像头仅仅框出物体位置,但是我并没有得到更多的信息,而物体中心坐标是一个很重要的信息,有了它我们可以实现物体追踪,视觉追踪等功能,所以第一步,我们就要想办法如何得到物体的中心点的信息。 通过浏览CSDN,网上很多都是直接改源码,只做到打印输出坐标,单丝没办法存到一个变量里面,所以我只能去官网获取一些信息了。 官网 Predict - Ultralytics YOLOv8 Docs 上

电子围栏有什么作用?一文看懂TSINGSEE车载监控平台电子围栏功能

车载GPS定位的电子围栏区别于大众传统认知上的电子围栏。车辆定位电子围栏是在监控车辆的地图上绘制电子围栏(指定一个活动区域,或者固定一个行驶路线),当携带有对应平台的GPS车辆在驶出或驶入这个指定范围时,则会产生报警信息发送到车载监控平台。 车载监控的电子围栏功能可以预防车辆的不良行为,具有防盗抢,提高车辆安全性、规范车辆管理等特点,可应用在危险品运输车、公交车、长途/旅游/团体客车、冷链/物流