首页 > 其他分享 >根据多边形的坐标点计中心点的方法

根据多边形的坐标点计中心点的方法

时间:2023-06-16 10:22:18浏览次数:35  
标签:多边形 point 点计 lat points 中心点 var lng Math

由于项目需要在地图覆盖物中心增加一个标签,我在网上找到一个算法来根据多边形的坐标点来计算得出该图像的中心点,在此记录一下。

    var findCenter = function (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];
            var lat, lng, x, y, z;
            lat = parseFloat(point.lat) * Math.PI / 180;
            lng = parseFloat(point.lng) * 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 {lat:tmp_lat * 180 / Math.PI, lng:tmp_lng * 180 / Math.PI};
    }

调用时通过Polygon的点直接获取中心点

var map = new BMapGL.Map('container');
var points = marker.getPath();
var center = findCenter(points);
var centerPoint = new BMapGL.Point(center.lng, center.lat);
var marker = new BMapGL.Marker(centerPoint);
map.addOverlay(marker1);

 

原文地址: https://blog.csdn.net/michaelzhouh/article/details/107380025

标签:多边形,point,点计,lat,points,中心点,var,lng,Math
From: https://www.cnblogs.com/masahiro/p/17484916.html

相关文章

  • 二维平面多边形的相交判定
    一、类型定义1、点exporttypePoint={  x:number;  y:number;}2、线typeSegment=[Point,Point];3、面typePolygon=Array<Point>;二、使用判断两个四边形是否相交:import{isPolygonsOverlap}from"./util.ts";letA:Polygon=[{x:0,y:......
  • 任意多边形切割/裁剪(附C#代码实现)
    任意多边形切割/裁剪(附C#代码实现) 本实现主要参考了发表于2003年《软件学报》的《一个有效的多边形裁剪算法》(刘勇奎,高云,黄有群)这篇论文,所使用的理论与算法大都基于本文,对论文中部分阐述进行了详细解释,并提取了论文中一些重要的理论加以汇总。另外对于论文描述无法处理......
  • 射线法判断点是否在多边形内
    射线法isPointInPolygon方法用于判断点是否在多边形内部,points表示多边形各个点的坐标,point表示要判断的点的坐标publicclassPointInPolygon{/***判断点是否在多边形内部**@parampoints多边形各个点的坐标*@parampoint要判断的点的坐标......
  • WPF中实现含有中心点Slider双向滑动条
    想要实现的效果原生滑动条需要认识一下滑动条的组成在原生控件中生成“资源字典”对应的样式然后在track所在的列进行添砖加瓦由于track在row="1"的位置,只需要在这个位置上面添加一个Ellipse和LineEllipse是来描述固定在滑动条上的中心点的位置line是来描述Thumb从中心......
  • P5288 [HNOI2019]多边形
    P5288[HNOI2019]多边形Solution先进行大量的模拟。最终所有线段的端点均为点\(n\)。第一问答案为\((n-1-与n相连的线段数量)\)。可以把线段看成节点,将原图转为若干棵二叉树组成的森林。这里只建那些不与点\(n\)相连的非边线段。原操作可以看作是sp......
  • threejs绘制多边形几何体
    threejs绘制多边形 //创建一个立方体几何体varcubeGeometry=newTHREE.BoxGeometry(0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5);//创建一个多边形几何体varpolygonGeometry=newTHREE.Geometry();//创建多边形的顶点数......
  • threejs绘制平面多边形
    在Three.js中,可以使用geometry对象和geometryMaterial对象来创建和渲染多边形几何体。下面是一个绘制多边形平面的示例代码: //创建一个立方体几何体varcubeGeometry=newTHREE.BoxGeometry(0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5);......
  • HDU3662(求三维凸包表面的多边形个数,表面三角形个数,体积,表面积,凸包重心,凸包中点到面
    题目:3DConvexHull题意:给定空间中的n个点,求这n个点形成的凸包的表面的多边形个数。增量法求解:首先任选4个点形成的一个四面体,然后每次新加一个点,分两种情况:1>在凸包内,则可以跳过2>在凸包外,找到从这个点可以"看见"的面S(看不看得见可以用法向量,看点是否在面外侧),删除这些......
  • Unity中根据平面的多边形点的数据,生成简单的立体网格
    todo 最近需要一个功能,就是根据给定的多边形顶点(按照顺时针或者逆时针这样的顺序),然后生成一个具有高度,投影与多边形一样的一个Mesh。效果如下,比如给定以下的一些顶点的位置         https://blog.csdn.net/lxbhahaha/article/details/111687476......
  • Unity 对多边形进行矩形分割和查找最大内接矩形
     花了点时间实现了对任意多边形进行矩形分割的功能,有需要的小伙伴可以点这里查看源码 一、实现效果:1、对图片里的内容进行矩形分割     2、对多边形顶点数据进行矩形分割    3、查找图片里内容的最大内接矩形    4、查找多边形顶点数据内的最大内......