JavaScript实现计算多边形质心的方法示例


Posted in Javascript onJanuary 31, 2018

本文实例讲述了JavaScript实现计算多边形质心的方法。分享给大家供大家参考,具体如下:

最近要基于百度地图显示多边形的标注,所以就研究了下计算Polygon的质心,代码如下:

function Area(p0,p1,p2)
{
  var area = 0.0 ;
  area = p0.lng * p1.lat + p1.lng * p2.lat + p2.lng * p0.lat - p1.lng * p0.lat - p2.lng * p1.lat - p0.lng * p2.lat;
  return area / 2 ;
}
//line 249 计算polygon的质心
function getPolygonAreaCenter(points) {
  var sum_x = 0;
  var sum_y = 0;
  var sum_area = 0;
  var p1 = points[1];
  debugger;
  for (var i = 2; i < points.length; i++) {
    p2=points[i];
    area = Area(points[0],p1,p2) ;
    sum_area += area ;
    sum_x += (points[0].lng + p1.lng + p2.lng) * area;
    sum_y += (points[0].lat + p1.lat + p2.lat) * area;
    p1 = p2 ;
  }
  var xx = sum_x / sum_area / 3;
  var yy = sum_y / sum_area / 3;
  return new BMap.Point(xx, yy);
}

标注文字的效果如下:

JavaScript实现计算多边形质心的方法示例

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
document.all与WEB标准
May 13 Javascript
JavaScript Memoization 让函数也有记忆功能
Oct 27 Javascript
js 可拖动列表实现代码
Dec 13 Javascript
浏览器加载、渲染和解析过程黑箱简析
Nov 29 Javascript
js之事件冒泡和事件捕获详细介绍
Oct 28 Javascript
探讨js中的双感叹号判断
Nov 11 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
Feb 23 Javascript
addEventListener()与removeEventListener()解析
Apr 20 Javascript
使用ES6语法重构React代码详解
May 09 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
Jun 07 Javascript
详解vue mint-ui源码解析之loadmore组件
Oct 11 Javascript
node.js环境搭建图文详解
Sep 19 Javascript
微信小程序switch开关选择器使用详解
Jan 31 #Javascript
详解Angular调试技巧之报错404(not found)
Jan 31 #Javascript
微信小程序slider组件使用详解
Jan 31 #Javascript
vue项目实现记住密码到cookie功能示例(附源码)
Jan 31 #Javascript
AngularJS 将再发布一个重要版本 然后进入长期支持阶段
Jan 31 #Javascript
微信小程序progress组件使用详解
Jan 31 #Javascript
微信小程序button组件使用详解
Jan 31 #Javascript
You might like
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
2009/10/29 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
PHP数组和explode函数示例总结
2015/05/08 PHP
微信支付开发告警通知实例
2016/07/12 PHP
PHP数组编码gbk与utf8互相转换的两种方法
2016/09/01 PHP
完美解决php 导出excle的.csv格式的数据时乱码问题
2017/02/18 PHP
基于PHP实现发微博动态代码实例
2020/12/11 PHP
js时间日期和毫秒的相互转换
2013/02/22 Javascript
有效提高JavaScript执行效率的几点知识
2015/01/31 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
jquery跟随屏幕滚动效果的实现代码
2016/04/13 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
基于JavaScript实现的折半查找算法示例
2017/04/14 Javascript
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
Vue学习笔记进阶篇之单元素过度
2017/07/19 Javascript
详解Axios统一错误处理与后置
2018/09/26 Javascript
javascriptvoid(0)含义以及与&quot;#&quot;的区别讲解
2019/01/19 Javascript
深入理解react 组件类型及使用场景
2019/03/07 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
JS实现购物车基本功能
2020/11/08 Javascript
利用JavaScript为句子加标题的3种方法示例
2021/01/05 Javascript
[01:33:25]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第一场 1月24日
2021/03/11 DOTA
Python中struct模块对字节流/二进制流的操作教程
2017/01/21 Python
深入浅出分析Python装饰器用法
2017/07/28 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
python 通过文件夹导入包的操作
2020/06/01 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
2014/01/18 面试题
人力资源专员岗位职责
2014/01/30 职场文书
个人公开承诺书
2014/03/28 职场文书
行政复议决定书
2015/06/24 职场文书
家电创业计划书
2019/08/05 职场文书
解析MySQL binlog
2021/06/11 MySQL