JSFiddle - React, Tailwind, and code Playground

by Julian Garcia Castillo

JavaScript

// get center of coordinates
let coords = [
[36.603348, -4.541657], // carrefour
[36.606640, -4.533901], // freiduria villalba
[36.600558, -4.534936] // oficina correos
]

console.log(getCenterCoords(coords))

function getCenterCoords(coords) {
 const LATIDX = 0;
    const LNGIDX = 1;
    let sumX = 0;
    let sumY = 0;
    let sumZ = 0;
  function _getRadians(degrees) {
    return degrees * Math.PI / 180;
  }

  function _getDegrees(radians) {
    return radians * 180 / Math.PI;
  }

    for (var i = 0; i < coords.length; i++) {
      var lat = _getRadians(coords[i][LATIDX]);
      var lng = _getRadians(coords[i][LNGIDX]);
      // sum of cartesian coordinates
      sumX += Math.cos(lat) * Math.cos(lng);
      sumY += Math.cos(lat) * Math.sin(lng);
      sumZ += Math.sin(lat);
    }

    var avgX = sumX / coords.length;
    var avgY = sumY / coords.length;
    var avgZ = sumZ / coords.length;

    // convert average x, y, z coordinate to latitude and longtitude
    var lng = Math.atan2(avgY, avgX);
    var hyp = Math.sqrt(avgX * avgX + avgY * avgY);
    var lat = Math.atan2(avgZ, hyp);

    return {
      "latitude": _getDegrees(lat),
      "longitude": _getDegrees(lng)
    };
}