Как преобразовать градус GPS в десятичную и наоборот в jquery или javascript и PHP? - PullRequest
5 голосов
/ 30 декабря 2011

кто-нибудь знает, как преобразовать градус GPS в десятичные значения или наоборот?

Мне нужно разработать способ, с помощью которого пользователи могут вставлять адрес и получать значения GPS (как градусы, так и / или десятичные числа),но главное, что мне нужно знать, это как конвертировать значения, потому что пользователи также могут вставлять значения GPS (градусы или десятичные числа).Потому что мне нужно получить карту из Google Maps, для этого нужно десятичное число.

Я пробовал некоторые коды, но я получаю большие числа ... как этот:

function ConvertDMSToDD(days, minutes, seconds, direction) {
    var dd = days + minutes/60 + seconds/(60*60);
    //alert(dd);
    if (direction == "S" || direction == "W") {
        dd = '-' + dd;
    } // Don't do anything for N or E
    return dd;
}

Любой?

Спасибо.

1 Ответ

8 голосов
/ 31 декабря 2011

Во-первых, спасибо @Eugen Rieck за помощь. Вот мой окончательный код, надеюсь, он кому-нибудь поможет:

градус до десятичного знака

function getDMS2DD(days, minutes, seconds, direction) {
    direction.toUpperCase();
    var dd = days + minutes/60 + seconds/(60*60);
    //alert(dd);
    if (direction == "S" || direction == "W") {
        dd = dd*-1;
    } // Don't do anything for N or E
    return dd;
}

десятичные в градусах на основе этой ссылки

function getDD2DMS(dms, type){

    var sign = 1, Abs=0;
    var days, minutes, secounds, direction;

    if(dms < 0)  { sign = -1; }
    Abs = Math.abs( Math.round(dms * 1000000.));
    //Math.round is used to eliminate the small error caused by rounding in the computer:
    //e.g. 0.2 is not the same as 0.20000000000284
    //Error checks
    if(type == "lat" && Abs > (90 * 1000000)){
        //alert(" Degrees Latitude must be in the range of -90. to 90. ");
        return false;
    } else if(type == "lon" && Abs > (180 * 1000000)){
        //alert(" Degrees Longitude must be in the range of -180 to 180. ");
        return false;
    }

    days = Math.floor(Abs / 1000000);
    minutes = Math.floor(((Abs/1000000) - days) * 60);
    secounds = ( Math.floor((( ((Abs/1000000) - days) * 60) - minutes) * 100000) *60/100000 ).toFixed();
    days = days * sign;
    if(type == 'lat') direction = days<0 ? 'S' : 'N';
    if(type == 'lon') direction = days<0 ? 'W' : 'E';
    //else return value     
    return (days * sign) + 'º ' + minutes + "' " + secounds + "'' " + direction;
}
alert(getDD2DMS(-8.68388888888889, 'lon'));

`

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...