EPSG:3395投影不提供地图包装

时间:2018-07-25 23:05:16

标签: openlayers openlayers-3

以下代码使用EPSG:3857投影(以米为单位提供坐标信息),并查看下面包含的屏幕截图,可以看出世界被IDL包裹,并且在图像中显示并选择了向量DragBox。也被重复。不幸的是EPSG:3857不符合DoD WGS 84标准,因此无法使用(非WGS 84空间参考系统可能会导致高达40,000米的地理位置/地理坐标误差),所以我无法使用它。

  baseLayer = new ol.layer.Tile({
      source: new ol.source.TileWMS({
        url: selectedUrl,
        projection: 'EPSG:3857',
    serverType: 'geoserver',
    params:{'LAYERS':"world",
                'TILED':true,
                'wrapDateLine':true,
                'VERSION': '1.3.0'},
        noWrap: false,
        wrapX: true
  })
   });

   var mousePositionControl = new ol.control.MousePosition({
      coordinateFormat: function(coordinate) {
         var lon = coordinate[0];
         var lat = coordinate[1];
         lon = lon % 360;
         if (lon > 180) {  
           lon = lon - 360;
         } else if (lon < -180) {
           lon = 360 + lon;
         }
         modifiedCoordinate = [lon, lat]
         return ol.coordinate.format(modifiedCoordinate, "{x}, {y}", 4);
      },
      projection: 'EPSG:4326',
      className: 'custom-mouse-position',
      target: document.getElementById('mouse-position'),
      undefinedHTML: '&nbsp;'
    });

    // Define map
    map = new ol.Map({
      controls: ol.control.defaults({
        attributionOptions: {
          collapsible: false
        }
      // Add the cursor control to the map
     }).extend([mousePositionControl]),
         target: 'map',
         layers: [baseLayer],
         view: new ol.View({
            center: [0, 0],
            projection: 'EPSG:3857',
            zoom: 2
         })
       });

3857 Projection

EPSG:3395符合DoD WGS 84,因此我需要将其用作投影。如果您在两种情况下都注意到,我也使用EPSG:4326,它以LAT / LON提供坐标信息,用于显示鼠标光标位置和所需AOI矩形的最终坐标。但是,在包含的EPSG:3395投影图形中,您可以看到仅显示地图的单个实例,与所选DragBox AOI矩形的单个实例一样。下面的代码与以下两个投影相同:定义线,一条在基层对象中,一条在地图对象中。

   baseLayer = new ol.layer.Tile({
      source: new ol.source.TileWMS({
        url: selectedUrl,
        projection: 'EPSG:3395',
    serverType: 'geoserver',
    params:{'LAYERS':"world",
                'TILED':true,
                'wrapDateLine':true,
                'VERSION': '1.3.0'},
        noWrap: false,
        wrapX: true
  })
   });

   var mousePositionControl = new ol.control.MousePosition({
      coordinateFormat: function(coordinate) {
         var lon = coordinate[0];
         var lat = coordinate[1];
         lon = lon % 360;
         if (lon > 180) {  
           lon = lon - 360;
         } else if (lon < -180) {
           lon = 360 + lon;
         }
         modifiedCoordinate = [lon, lat]
         return ol.coordinate.format(modifiedCoordinate, "{x}, {y}", 4);
      },
      projection: 'EPSG:4326',
      className: 'custom-mouse-position',
      target: document.getElementById('mouse-position'),
      undefinedHTML: '&nbsp;'
    });

    // Define map
    map = new ol.Map({
      controls: ol.control.defaults({
        attributionOptions: {
          collapsible: false
        }
      // Add the cursor control to the map
     }).extend([mousePositionControl]),
         target: 'map',
         layers: [baseLayer],
         view: new ol.View({
            center: [0, 0],
            projection: 'EPSG:3395',
            zoom: 2
         })
       });

3395 Projection

在EPSG:3857投影的情况下,滚动地图时,您会看到OpenLayers向GeoServer请求其他地图图块。但是,在EPSG:3395的情况下,没有这样的额外请求出现,因此问题似乎深藏在OpenLayers中,但是对于它们为何工作方式不同却没有任何意义。

我的问题是这个。有谁知道为什么EPSG:3395投影在配置为像上述代码的两个实例一样在IDL处换行时,不会产生换行的地图显示?

0 个答案:

没有答案