Proj4JS - Преобразование 2.3.3 против 2.4.3

Какого черта в Proj4JS, что 2.4.3 с одним и тем же кодом преобразует координаты совершенно по-разному? Посмотри на эту скрипку.

Если вы поменяете местами ресурсы proj4js слева. Вы увидите, что 2.3.3 преобразуется точно, а 2.4.3 преобразуется совершенно неверно.

Я также включил 2 примера, которые вы можете использовать прямо в этом вопросе.

http://jsfiddle.net/8ztfhes0/17/

РЕДАКТИРОВАТЬ - Итак, сделаем еще немного исследований. Я обнаружил, что проблема действительно возникает в версии 2.3.16. До 2.3.15 нормально.

Комментарий фиксации = для 2.3.16 "добавляет лучшую проекцию tmerc"

2.4.3 Образец

proj4.defs("EPSG:26910","+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs");
    var source = new proj4.Proj('EPSG:26910');  
    var dest = new proj4.Proj('EPSG:4326');      
    $("#lat").val(4970142.88145653);
    $("#lng").val(500532.52879695);
    $("#convert").on("click", function(){
        var p = new proj4.Point($("#lng").val(), $("#lat").val() );
        proj4.transform(source, dest, p);
        console.info("X : " +p.x + " \nY : " + p.y);
        alert("X : " +p.x + " \nY : " + p.y);
    });
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
    <script src = "https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.4.3/proj4.js"></script>
    
    Lng : <input type = "number" id = "lng" />
    Lat : <input type = "number" id = "lat" />
    <button id = "convert">Convert</button>
    

2.3.3 пример

proj4.defs("EPSG:26910","+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs");
    var source = new proj4.Proj('EPSG:26910');  
    var dest = new proj4.Proj('EPSG:4326');      
    $("#lat").val(4970142.88145653);
    $("#lng").val(500532.52879695);
    $("#convert").on("click", function(){
        var p = new proj4.Point($("#lng").val(), $("#lat").val() );
        proj4.transform(source, dest, p);
        console.info("X : " +p.x + " \nY : " + p.y);
        alert("X : " +p.x + " \nY : " + p.y);
    });
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
    <script src = "https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.3.3/proj4.js"></script>
    
    Lng : <input type = "number" id = "lng" />
    Lat : <input type = "number" id = "lat" />
    <button id = "convert">Convert</button>
    
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
1 941
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже, проблема в том, что вы используете входной параметр p вместо значения, возвращаемого proj4.transform. Кроме того, в качестве примечания, документация для текущей версии proj4js (2.4.3 на момент написания) показывает, что вы можете вызывать proj4 напрямую вместо proj4.transform.

Следующее иллюстрирует разницу:

proj4.defs("EPSG:26910","+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs");
var source = new proj4.Proj('EPSG:26910');  
var dest = new proj4.Proj('EPSG:4326');      
var p = {x: 500532.52879695, y: 4970142.88145653};
var result = proj4(source, dest, p);
console.info('Correct:', result);
console.info('Wrong:', p);
<script src = "https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.4.3/proj4.js"></script>

(Я немного упростил пример, удалив все, что связано с HTML / jQuery.)

Огромное спасибо :) - О да, я знаком с этим. Я не зря употреблял транс. Но это нормально.

GrafixMastaMD 11.04.2018 14:59

Это говорит мне, что они удалили функцию обновления третьего аргумента и вернули прямое значение.

GrafixMastaMD 11.04.2018 15:01

Другие вопросы по теме