Я пытаюсь преобразовать данные GPS в десятичную форму, но в консоли не отображаются правильные значения широты и долготы. - PullRequest
0 голосов
/ 23 июня 2019

Я хочу извлечь gps местоположение изображения, введенного пользователем, а затем отметить его на карте.но здесь, в этом javascript, он не показывает правильный результат данных GPS в консоли, когда я преобразую их в десятичные числа (широта и долгота)

'' 'Javascript

document.getElementById("the-img").onclick = function() {

    EXIF.getData(this, function() {

        myData = this;

        console.log(myData.exifdata);

        var latDegree = myData.exifdata.GPSLatitude[0].numerator;
        var latMinute = myData.exifdata.GPSLatitude[1].numerator;
        var latSecond = myData.exifdata.GPSLatitude[2].numerator;
        var latDirection = myData.exifdata.GPSLatitudeRef;

        var latFinal = ConvertDMSToDD(latDegree, latMinute, latSecond, latDirection);
        console.log(latFinal);

        var lonDegree = myData.exifdata.GPSLongitude[0].numerator;
        var lonMinute = myData.exifdata.GPSLongitude[1].numerator;
        var lonSecond = myData.exifdata.GPSLongitude[2].numerator;
        var lonDirection = myData.exifdata.GPSLongitudeRef;

        var lonFinal = ConvertDMSToDD(lonDegree, lonMinute, lonSecond, lonDirection);
        console.log(lonFinal);
    });
  }

  function ConvertDMSToDD(degrees, minutes, seconds, direction) {

      var dd = degrees + (minutes/60) + (seconds/3600);

      if (direction == "S" || direction == "W") {
          dd = dd * -1;
      }
       return dd;
  }

' ''

  GPSLatitude: Array(3)
  0: Number {12, numerator: 12, denominator: 1}
  1: Number {58, numerator: 58, denominator: 1}
  2: Number {19.6121, numerator: 196121, denominator: 10000}

  GPSLongitude: Array(3)
  0: Number {77, numerator: 77, denominator: 1}
   1: Number {34, numerator: 34, denominator: 1}
  2: Number {13.0022, numerator: 130022, denominator: 10000}

Я ожидаю выходной широты: 12,972114 и долготы: 77,570278, но выходной 67,44472222222223 113,68388888888889`

function readURL(input) {
        if (input.files && input.files[0]) {
            var reader = new FileReader();

            reader.onload = function (e) {
                $('#the-img')
                    .attr('src', e.target.result)
                    .width(150)
                    .height(200);
            };

            reader.readAsDataURL(input.files[0]);
        }
    }

    document.getElementById("the-img").onclick = function() {

        EXIF.getData(this, function() {

            myData = this;

            console.log(myData.exifdata);

            var latDegree = myData.exifdata.GPSLatitude[0].numerator;
            var latMinute = myData.exifdata.GPSLatitude[1].numerator;
            var latSecond = myData.exifdata.GPSLatitude[2].numerator;
            var latDirection = myData.exifdata.GPSLatitudeRef;

            var latFinal = ConvertDMSToDD(latDegree, latMinute, latSecond, latDirection);
            console.log(latFinal);

// Calculate longitude decimal
            var lonDegree = myData.exifdata.GPSLongitude[0].numerator;
            var lonMinute = myData.exifdata.GPSLongitude[1].numerator;
            var lonSecond = myData.exifdata.GPSLongitude[2].numerator;
            var lonDirection = myData.exifdata.GPSLongitudeRef;

            var lonFinal = ConvertDMSToDD(lonDegree, lonMinute, lonSecond, lonDirection);
            console.log(lonFinal);
        });
      }

      function ConvertDMSToDD(degrees, minutes, seconds, direction) {

          var dd = degrees + (minutes/60) + (seconds/3600);

          if (direction == "S" || direction == "W") {
              dd = dd * -1;
          }

          return dd;
      }
<!DOCTYPE html>
<html>
<head>

<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.0/jquery-ui.min.js"></script>
<meta charset=utf-8 />

<title>JS Bin</title>

<style>
  article, aside, figure, footer, header, hgroup,
  menu, nav, section { display: block; }
</style>
</head>
<body>
  <input type='file' onchange="readURL(this);" />
  <img id="the-img" src="#" alt="your image" />
  <script src="myscript.js" type="text/javascript"></script>
  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/exif-js/2.3.0/exif.min.js"></script>






</body>
</html>
...