根据多边形的坐标点计中心点的方法
由于项目需要在地图覆盖物中心增加一个标签,我在网上找到一个算法来根据多边形的坐标点来计算得出该图像的中心点,在此记录一下。
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理