簡體   English   中英

Openlayers - 為 View 設置特定的投影

[英]Openlayers - set specific projection for View

如何為地圖設置特定投影? 我在 Angular 10 上下文中使用 Openlayers 6。

地圖加載在 EPSG:3857 中,我想通過投影 EPSG:28992 使用它。

嘗試 1:

proj4.defs["EPSG:28992"] = "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000  +ellps=bessel  +towgs84=565.040,49.910,465.840,-0.40939,0.35971,-1.86849,4.0772 +units=m +no_defs";
register(proj4)
let dutchProjection = GetProjection('EPSG:28992');

this.map = new Map({
  layers: [
    new Tile({
      source: new XYZ({
        url: 'https://geodata.nationaalgeoregister.nl/tiles/service/wmts/brtachtergrondkaart/EPSG:3857/{z}/{x}/{y}.png',
      })
    }), this.vectorLayer
  ],
  view: new View({
    projection: dutchProjection,
    center: [173563, 441818],
    zoom: 10
  }),
  target: "map"
});

嘗試-2:

let dutchProjection = new Projection({
  code: "EPSG:28992",
  units: "m",
  extent: [-285401.92, 22598.08, 595401.9199999999, 903401.9199999999]
});

this.map = new Map({
  layers: [
    new Tile({
      source: new XYZ({
        url: 'https://geodata.nationaalgeoregister.nl/tiles/service/wmts/brtachtergrondkaart/EPSG:3857/{z}/{x}/{y}.png',
      })
    }), this.vectorLayer
  ],
  view: new View({
    projection: dutchProjection,
    center: [173563, 441818],
    zoom: 10
  }),
  target: "map"
});

受到@Mike 答案的啟發,此解決方案有效! 選項 1 是正確的,但有錯誤。

proj4.defs("EPSG:28992","+proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000  +ellps=bessel  +towgs84=565.040,49.910,465.840,-0.40939,0.35971,-1.86849,4.0772 +units=m +no_defs");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM