当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


JavaScript ArcGIS MapView.spatialReference用法及代码示例


基本信息

以下是所在类或对象的基本信息。

AMD: require(["esri/views/MapView"], (MapView) => { /* code goes here */ });

ESM: import MapView from "@arcgis/core/views/MapView";

类: esri/views/MapView

继承: MapView > View > Accessor

自从:用于 JavaScript 4.0 的 ArcGIS API

用法说明

MapView.spatialReference函数(或属性)的定义如下:

spatialReference SpatialReference autocast


视图的空间参考。这表示用于在Map中定位地理特征的投影坐标系或地理坐标系。从版本 4.23 开始,您可以在 MapView 初始化后通过直接更改此属性或通过更改 BasemapGalleryBasemapToggle 小部件中的底图来更改 MapView 的空间参考。将spatialReferenceLocked属性设置为true以防止用户在运行时更改视图的空间参考。

在更改空间参考之前,请通过调用 projection.isLoaded() 检查 projection engine 是否已加载。如果尚未加载,则调用projection.load()方法。如果未加载投影引擎,视图的中心将默认为视图的新空间参考中的[0, 0],并且将引发控制台错误。

注意

  • 不显示与视图的空间参考不兼容的LayerViews。在这种情况下,图层视图的 suspended 属性是 true 并且 spatialReferenceSupported 属性是 false

  • 设置视图的空间参考时,中心、范围或viewpoint.targetGeometry属性将投影到新的空间参考。调整比例和旋转属性以使Map内容在屏幕上保持相同的大小和方向。

  • 为确保TileLayersVectorTileLayers 正确显示在basemap 中,必须将MapView 的空间参考设置与其tileInfo's 空间参考相匹配。

  • 不支持使用 imageCoordinateSystem 切换空间参考。

默认值:null

例子:

// check if the projection engine is loaded
if (!projection.isLoaded()) {
  // load the projection engine if it is not loaded
  projection.load().then(() => {
   // change the spatial reference of the view to equal earth projection
    view.spatialReference = new SpatialReference({
      wkid: 54035 //equal earth projection
    });
  });
} else {
  // the projection engine is already loaded.
  // change the spatial reference of the view to equal earth projection
  view.spatialReference = new SpatialReference({
    wkid: 54035 //equal earth projection
  });
}
const basemap = await changeBasemap();
const spatialReference = await findSpatialReference(basemap);

// check if basemap has the same spatial reference as the view if they are not equal
// then check if the projection engine is loaded. load the projection engine if it is not loaded.
// If loaded, then simply change view.spatialReference to match the basemap spatialReference
if (spatialReference && !view.spatialReference.equals(spatialReference)) {
  if (!projection.isLoaded()) {
    // load the projection engine if it is not loaded
    await projection.load();
  }
  view.spatialReference = spatialReference;
}

// change the basemap
map.basemap = basemap;

async function changeBasemap() {
  let basemap;
  if (map.basemap.title === "OpenStreetMap Vector Basemap (Blueprint - WGS84)"){
    basemap = new Basemap({
      portalItem: { // Spilhaus - one ocean basemap
        id: "5639ccf22d4c4830ab815c4f9c9319bb"
      }
    });
  } else {
    basemap = osm84;
  }
  return basemap;
}

async function findSpatialReference(basemap) {
  await basemap.load();

  if (basemap.spatialReference) {
    return basemap.spatialReference;
  }

  const layer = basemap.baseLayers.at(0);

  if (!layer) {
    return null;
  }

  await layer.load();

  return layer.spatialReference;
}

相关用法


注:本文由纯净天空筛选整理自arcgis.com大神的英文原创作品 MapView.spatialReference。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。