【问题标题】:Transformation between projections doesn't work投影之间的转换不起作用
【发布时间】:2015-02-25 16:07:31
【问题描述】:

我正在尝试使用 openlayers 在两个不同的投影之间进行转换,但我无法使其工作。 我确定我的源投影是 EPSG:2100,我需要将其转换为我的地图投影,即 Spherical Mercator。

无论我做什么,我在地图上创建和放置的标记总是在同一个位置:

       var addMarker = function(){

           var fromProjection = new OpenLayers.Projection("EPSG:2100");
           var toProjection   = new OpenLayers.Projection("EPSG:4326"); 
           var position       = new OpenLayers.LonLat(479758.284700697,4207092.83410554).transform( fromProjection, toProjection);

           markers = new OpenLayers.Layer.Markers("Markers");
           map.addLayer(markers);

           marker = new OpenLayers.Marker(position)
          markers.addMarker(marker); 
         };
          var destroyMarker = function(){
           markers.removeMarker(marker);

       };

【问题讨论】:

    标签: openlayers projection


    【解决方案1】:

    我认为您必须先声明您的投影 (EPSG:2100)。您可以使用proj4js Library 来做到这一点。

    我尝试了你的代码,这就是它向我展示的内容:`

    "NetworkError: 404 Not Found - http://localhost:19614/JSLib/proj4js/lib/defs/EPSG2100.js"
    

    当您的投影在您的库中未知时,就会发生这种情况。

    还有别的:EPSG:4326 不是球形墨卡托,它是 WGS84 的代码。 对于 Sperical Mercator,您必须使用:EPSG:900913 或 EPSG:3857。 有关 EPSG 数据集的更多信息,您可以查看here

    【讨论】:

    • 是的,这就是问题所在。我很久以前就知道了! :)。 Openlayers 并不支持所有的投影和它们之间的转换,这就是你需要使用上述库的原因。
    猜你喜欢
    • 2011-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多