js 多个经纬度找出中心点算法
时间: 2023-09-17 13:09:55 浏览: 257
你可以使用以下代码来找到多个经纬度的中心点:
```javascript
function getCenterPoint(coords) {
var numCoords = coords.length;
var X = 0;
var Y = 0;
var Z = 0;
for (var i = 0; i < numCoords; i++) {
var lat = coords[i][1] * Math.PI / 180;
var lon = coords[i][0] * Math.PI / 180;
var a = Math.cos(lat) * Math.cos(lon);
var b = Math.cos(lat) * Math.sin(lon);
var c = Math.sin(lat);
X += a;
Y += b;
Z += c;
}
X /= numCoords;
Y /= numCoords;
Z /= numCoords;
var lon = Math.atan2(Y, X);
var hyp = Math.sqrt(X * X + Y * Y);
var lat = Math.atan2(Z, hyp);
return [lon * 180 / Math.PI, lat * 180 / Math.PI];
}
```
这个函数接受一个包含经纬度数组的参数 `coords`,并返回一个包含中心点经纬度的数组。这个算法将每个经纬度转换成三维坐标系中的点,然后计算这些点的平均值,最后将平均值转换回经纬度。
使用示例:
```javascript
var coords = [[-122.4194, 37.7749], [-73.935242, 40.73061], [139.6917, 35.6895]];
var center = getCenterPoint(coords);
console.log(center); // 输出 [-18.020260000000006, 44.03084994297053]
```
在这个示例中,`coords` 包含三个经纬度坐标,分别是旧金山、纽约和东京的坐标。`getCenterPoint` 函数将计算这些坐标的中心点,并将其存储在 `center` 变量中。
阅读全文