如何通过JS API加载自定义坐标系WMTS服务?

如何通过JS API加载自定义坐标系WMTS服务?
已邀请:

刘峥 - ArcGIS多面手

赞同来自:

【解决办法】:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8>

<meta name=viewport content=initial-scale=1, maximum-scale=1,user-scalable=no>
<title>Open WMTS Service</title>

<link rel=stylesheet href=https://js.arcgis.com/3.18/dij ... gt%3B
<link rel=stylesheet href=https://js.arcgis.com/3.18/esri/css/esri.css>
<style>
html, body, #map {
height: 100%;
margin: 0;
padding: 0;
}
</style>
<script src=https://js.arcgis.com/3.18/></script>
<script>
require([
dojo/_base/declare,
esri/map,
esri/layers/WMTSLayer,
esri/layers/TiledMapServiceLayer,
esri/geometry/Extent,
esri/SpatialReference,
esri/layers/TileInfo,
esri/layers/ArcGISDynamicMapServiceLayer,
esri/layers/ImageParameters,
dojo/domReady!
], function (declare, Map, WMTSLayer, TiledMapServiceLayer, Extent, SpatialReference, TileInfo, ArcGISDynamicMapServiceLayer, ImageParameters){

//自定义坐标系
var sr = ''PROJCS[User_Defined_Transverse_Mercator,GEOGCS[GCS_User_Defined,DATUM[D_User_Defined,SPHEROID[User_Defined_Spheroid,6378137.0,298.257222101]],PRIMEM[Greenwich,0.0],UNIT[Degree,0.0174532925199433]],PROJECTION[Transverse_Mercator],PARAMETER[False_Easting,500000.0],PARAMETER[False_Northing,0.0],PARAMETER[Central_Meridian,112.5],PARAMETER[Scale_Factor,1.0],PARAMETER[Latitude_Of_Origin,0.0],UNIT[Meter,1.0]],VERTCS[Yellow_Sea_1985,VDATUM[Yellow_Sea_1985],PARAMETER[Vertical_Shift,0.0],PARAMETER[Direction,1.0],UNIT[Meter,1.0]]'';

var CustomWMTSLayer = declare([TiledMapServiceLayer], {
declaredClass: ogc.WMTSLayer,
constructor: function (){
this.copyright = ''<a href=liuzheng>OuWMTS</a>'';
this.version = 1.0.0;
this.identifier = ou;
this.imageFormat = image/jpgpng;
this.tileMatrixSet = default028mm;
this.spatialReference = new SpatialReference({wkt:sr});
this.fullExtent = new Extent(512942.9622999998, 2966225.9645000007, 516486.9622999998, 2968287.9645000007, this.spatialReference);
this.initialExtent = new Extent(512942.9622999998, 2966225.9645000007, 516486.9622999998, 2968287.9645000007, this.spatialReference);

//读取切片信息
this.tileInfo = new TileInfo({
dpi: 90.71428571427429,
format: image/png,
compressionQuality: 0,
spatialReference: {
wkt: sr
},
rows: 256,
cols: 256,
origin: {
x: -5123200,
y: 10002100
},

lods: [
{
level: 0,
scale: 32000,
resolution: 8.466683600033868
}, {
level: 1,
scale: 16000,
resolution: 4.233341800016934
}, {
level: 2,
scale: 8000,
resolution: 2.116670900008467
}, {
level: 3,
scale: 4000,
resolution: 1.0583354500042335
}, {
level: 4,
scale: 2000,
resolution: 0.5291677250021167
},{
level: 5,
scale: 1000,
resolution: 0.26458386250105836
}
]
});
this.loaded = true;
this.onLoad(this);
},

//WMTS服务地址
getTileUrl: function (level, row, col){
var urlTemplate = http://192.168.100.139/arcgis/ ... /WMTS +
?SERVICE=WMTS&VERSION= + this.version +
&REQUEST=GetTile +
&LAYER= + this.identifier +
&STYLE=default +
&FORMAT= + this.imageFormat +
&TILEMATRIXSET= + this.tileMatrixSet +
&TILEMATRIX= + level +
&TILEROW= + row + &TILECOL= + col;
return urlTemplate;
}
});


var map = new Map(map, {
});

var imageParameters = new ImageParameters();
imageParameters.format = png8;

//动态地图服务地址
var dynamicMapServiceLayer = new ArcGISDynamicMapServiceLayer(http://192.168.100.139/arcgis/ ... erver, {
opacity : 0.8,
imageParameters : imageParameters
});

var customWMTSLayer = new CustomWMTSLayer();
map.addLayer(customWMTSLayer);
map.addLayer(dynamicMapServiceLayer);
});
</script>
</head>
<body class=claro>
<div id=map></div>
</body>
</html>

要回复问题请先登录注册