首页 > 解决方案 > 如何计算按钮单击中多个坐标之间的距离?

问题描述

< script >
  const start = document.querySelector("#start");
const stop = document.querySelector("#stop");
const calculate = document.querySelector("#calculate");

//  const coordinates = []; 
// const coordinates1 = [];
var lat_1 = [];
var lon_1 = [];
var lat_2 = [];
var lon_2 = [];

start.addEventListener("click", () => {
  navigator.geolocation.getCurrentPosition(data => {
      console.log(data);
      lat_1.push([data.coords.latitude]);
      lon_1.push([data.coords.longitude]);
      window.localStorage.setItem(
        "lat1",
        JSON.stringify(lat_1)
      );
      window.localStorage.setItem(
        "lon1",
        JSON.stringify(lon_1)
      );

    },
    (error) => console.log(error), {
      enableHighAccuracy: true
    }

  );
});

stop.addEventListener("click", () => {
  navigator.geolocation.getCurrentPosition(data => {
      console.log(data);
      lat_2.push([data.coords.latitude]);
      lon_2.push([data.coords.longitude]);
      window.localStorage.setItem(
        "lat2",
        JSON.stringify(lat_2)
      );
      window.localStorage.setItem(
        "lon2",
        JSON.stringify(lon_2)
      );

    },
    (error) => console.log(error), {
      enableHighAccuracy: true
    }

  );
});

//Converts coordinates in degrees to radians.
function toRad(degrees) {
  return degrees * Math.PI / 180;
}

for (var i = 0; i < data.coords.length - 1; i++) {
  distanceTotal += google.maps.geometry.spherical.computeDistanceBetween(coords[i], coords[i + 1]);
}
// let sum = 0;
//for (let i = 0; i = 100; i++) {



//Harvensine Formula
function calculateDistance() {
  //Get values of our inputs
  var late_1 = window.localStorage.getItem("lat1");
  var lat1 = JSON.parse(late_1);
  var long_1 = window.localStorage.getItem("lon1");
  var lon1 = JSON.parse(long_1);
  var late_2 = window.localStorage.getItem("lat2");
  var lat2 = JSON.parse(late_2);
  var long_2 = window.localStorage.getItem("lon2");
  var lon2 = JSON.parse(long_2);






  // Radius of earth, KM 
  var radiusOfEarth = 6371;
  var lattitudeDifference = lat2 - lat1;
  var dLat = toRad(lattitudeDifference);
  var longitudeDifference = lon2 - lon1;
  var dLon = toRad(longitudeDifference);
  /*
  a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)
  c = 2 ⋅ atan2( √a, √(1−a) )
  d = R ⋅ c
  where φ is latitude, λ is longitude, R is earth’s radius
  Assumes that the earth radius is 6,371 KM
  */
  var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
    Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) *
    Math.sin(dLon / 2) * Math.sin(dLon / 2);
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  var distance = radiusOfEarth * c;
  distance = parseFloat(distance).toFixed(2);
  var distanceInMiles = 0.62137119 * distance
  distanceInMiles = parseFloat(distanceInMiles).toFixed(2);
  //document.getElementById('distance').innerHTML = distance + " km, or " + distanceInMiles + "mi.";
  //sum + distance[i];
  console.log(distance, distanceInMiles);

}
//}







<
/script>

我有一个代码来计算两个坐标之间的距离,但我想计算多个坐标之间的距离,我尝试使用 Harvensine 公式遍历数组,但我做不到,请帮助我。

强调文字你好,我想计算一个按钮点击中多个坐标之间的距离,你能帮帮我吗,我在下面附上了我的代码。我的意思是,如何使用 Harvensine 公式遍历数组。

标签: javascripthtmlcss

解决方案


推荐阅读