uniapp map地图 多边形中心点

发布时间 2023-12-22 16:16:09作者: danmo_xx

需求:用户进入页面,页面展示电子围栏中心点,

技术栈:uniapp+map地图

效果图:

::接口未返回中心点的经纬度,需要前端计算中心点在哪里

 代码:

 

centerList() {
let newArr = this.arrRed.map(item => {
item.latitude = Number(item.latitude);
item.longitude = Number(item.longitude);
return Object.values(item);
});
let total = newArr.length;
let X = 0,
Y = 0,
Z = 0;
newArr.forEach((item, i) => {
let lng = item[1] * Math.PI / 180;
let lat = item[0] * Math.PI / 180;
let x, y, z;
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 / total;
Y = Y / total;
Z = Z / total;
let Lng = Math.atan2(Y, X);
let Hyp = Math.sqrt(X * X + Y * Y);
let Lat = Math.atan2(Z, Hyp);
this.latitude = Lat * 180 / Math.PI;
this.longitude = Lng * 180 / Math.PI;
},