1、定义点位数组;
var newpoints = [];
2、在加载地图点位数据循环中给newpoints数组赋值;
newpoints.push([x坐标, y坐标]);
3、调用获取中心点方法;
if (newpoints.length >0) { //当点集合不为空,获取点位数据集合中心点坐标
var xy = calculateCenter(newpoints);
map.setCenter(xy);//重新给地图初始化显示中心的位置
}
//获取数组坐标集合中点位的中心坐标
function calculateCenter(lnglatarr) {
var total = lnglatarr.length;
var X = 0,
Y = 0,
Z = 0;
lnglatarr.map((item) => {
var lng = (item[0] * Math.PI) / 180;
var lat = (item[1] * Math.PI) / 180;
var 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;
var Lng = Math.atan2(Y, X);
var Hyp = Math.sqrt(X * X + Y * Y);
var Lat = Math.atan2(Z, Hyp);
return new AMap.LngLat((Lng * 180) / Math.PI, (Lat * 180) / Math.PI);
}