首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Proj4JS -转换2.3.3 vs 2.4.3

Proj4JS -转换2.3.3 vs 2.4.3
EN

Stack Overflow用户
提问于 2018-04-11 11:46:27
回答 1查看 3.3K关注 0票数 0

为什么在Proj4JS中2.4.3用相同的代码转换坐标完全不同?看这把小提琴。

如果您交换左边的proj4js资源的顺序。您将看到2.3.3转换是准确的,2.4.3转换完全错误。

我还包括了两个例子,你可以在这个问题上正确使用。

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

编辑-所以在做更多的研究。我发现这个问题实际上出现在2.3.16版本中。最多2.3.15是好的。

提交注释= for 2.3.16“添加更好的tmerc投影”

2.4.3样本

代码语言:javascript
复制
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.log("X : " +p.x + " \nY : " + p.y);
        alert("X : " +p.x + " \nY : " + p.y);
    });
代码语言:javascript
复制
<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实例

代码语言:javascript
复制
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.log("X : " +p.x + " \nY : " + p.y);
        alert("X : " +p.x + " \nY : " + p.y);
    });
代码语言:javascript
复制
<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>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-11 12:51:29

问题是,您使用的是输入参数p,而不是proj4.transform返回的值。另外,作为附带说明,当前版本的文档 (撰写本文时为2.4.3)显示,您可以直接调用proj4而不是proj4.transform

以下是区别之处:

代码语言:javascript
复制
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.log('Correct:', result);
console.log('Wrong:', p);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/proj4js/2.4.3/proj4.js"></script>

(我删除了所有与HTML/jQuery相关的内容,从而简化了示例。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49774309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档