React Native 如何计算我的手机与另一条纬线之间的Angular ?

o0lyfsai  于 2022-11-25  发布在  React
关注(0)|答案(1)|浏览(92)

我正在开发一个指向一个地方的应用程序。我有我手机的纬度和经度以及我想指向的地方。我从来没有用过陀螺仪。我希望创建这样一个函数:

getAngle(lat1, lng1,lat2.lng2) {

return angle;
}

也许以前有人用过这个?
我试着从双方获得dms,但我认为它可以与经度和纬度一起工作。我使用这些函数将我的经度和纬度转换为dms:

toDegreesMinutesAndSeconds(coordinate) {
  var absolute = Math.abs(coordinate);
  var degrees = Math.floor(absolute);
  var minutesNotTruncated = (absolute - degrees) * 60;
  var minutes = Math.floor(minutesNotTruncated);
  var seconds = Math.floor((minutesNotTruncated - minutes) * 60);

  return degrees + " " + minutes + " " + seconds;
}

convertDMS(lat, lng) {
  var latitude = this.toDegreesMinutesAndSeconds(lat);
  var latitudeCardinal = lat >= 0 ? "N" : "S";

  var longitude = this.toDegreesMinutesAndSeconds(lng);
  var longitudeCardinal = lng >= 0 ? "E" : "W";

  return latitude + " " + latitudeCardinal + "\n" + longitude + " " + longitudeCardinal;
}
lhcgjxsq

lhcgjxsq1#

我们可以使用半正矢公式来求Angular 。

const getAngle = (lat1,lat2,long1,long2) => {
    
        const dLon = (long2 - long1);
    
        const y = Math.sin(dLon) * Math.cos(lat2);
        const x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1)
                * Math.cos(lat2) * Math.cos(dLon);
    
        let brng = Math.atan2(y, x);
    
        brng = brng * 180 / Math.PI;
        brng = (brng + 360) % 360;
        brng = 360 - brng; // count degrees counter-clockwise - remove to make clockwise
    
        return brng;
    }
    
    console.log(getAngle(20,30,10,15))
    //161.54169612572116

相关问题