Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
static getMeterPerMapUnit(mapUnit) {
var earchRadiusInMeters = 6378137;
var meterPerMapUnit;
if (mapUnit === Unit.METER) {
meterPerMapUnit = 1;
} else if (mapUnit === Unit.DEGREE) {
// 每度表示多少米。
meterPerMapUnit = Math.PI * 2 * earchRadiusInMeters / 360;
} else if (mapUnit === Unit.KILOMETER) {
meterPerMapUnit = 1.0E-3;
} else if (mapUnit === Unit.INCH) {
meterPerMapUnit = 1 / 2.5399999918E-2;
} else if (mapUnit === Unit.FOOT) {
meterPerMapUnit = 0.3048;
} else {
return meterPerMapUnit;
}
return meterPerMapUnit;
}
}
}
me.origin = me.tileGrid.getOrigin(0);
var z = tileCoord[0];
var x = tileCoord[1];
var y = -tileCoord[2] - 1;
var resolution = me.tileGrid.getResolution(z);
var dpi = 96;
var unit = projection.getUnits() || Unit.DEGREE;
// OGC WKT 解析出单位是 degree
if (unit === 'degrees' || unit === 'degree') {
unit = Unit.DEGREE;
}
//通过wkt方式自定义坐标系的时候,是meter
if (unit === 'm' || unit === 'meter') {
unit = Unit.METER;
}
var scale = Util.resolutionToScale(resolution, dpi, unit);
var tileSize = ol.size.toSize(me.tileGrid.getTileSize(z, me.tmpSize));
var layerUrl = getFullRequestUrl.call(me);
var url = layerUrl + encodeURI("&x=" + x + "&y=" + y + "&width=" + tileSize[0] + "&height=" + tileSize[1] + "&scale=" + scale);
//支持代理
if (me.tileProxy) {
url = me.tileProxy + encodeURIComponent(url);
}
if (!me.cacheEnabled) {
url += "&_t=" + new Date().getTime();
}
return url;
}
return crs.scales[coords.z];
} else {
var tileBounds = me._tileCoordsToBounds(coords);
var ne = crs.project(tileBounds.getNorthEast());
var sw = crs.project(tileBounds.getSouthWest());
var tileSize = me.options.tileSize;
var resolution = Math.max(
Math.abs(ne.x - sw.x) / tileSize,
Math.abs(ne.y - sw.y) / tileSize
);
var mapUnit = Unit.METER;
if (crs.code) {
var array = crs.code.split(':');
if (array && array.length > 1) {
var code = parseInt(array[1]);
mapUnit = code && code >= 4000 && code <= 5000 ? Unit.DEGREE : Unit.METER;
}
}
return Util.resolutionToScale(resolution, 96, mapUnit);
}
},
getDefaultScale: function (coords) {
var me = this,
crs = me._crs;
if (crs.scales) {
return crs.scales[coords.z];
} else {
var tileBounds = me._tileCoordsToBounds(coords);
var ne = crs.project(tileBounds.getNorthEast());
var sw = crs.project(tileBounds.getSouthWest());
var tileSize = me.options.tileSize;
var resolution = Math.max(
Math.abs(ne.x - sw.x) / tileSize,
Math.abs(ne.y - sw.y) / tileSize
);
var mapUnit = Unit.METER;
if (crs.code) {
var array = crs.code.split(':');
if (array && array.length > 1) {
var code = parseInt(array[1]);
mapUnit = code && code >= 4000 && code <= 5000 ? Unit.DEGREE : Unit.METER;
}
}
return Util.resolutionToScale(resolution, 96, mapUnit);
}
},
function getResolutions() {
var level = 17;
var dpi = 96;
var width = extent[2] - extent[0];
var height = extent[3] - extent[1];
var tileSize = width >= height ? width : height;
var maxReolution;
if (tileSize === width) {
maxReolution = tileSize / mapJSONObj.viewer.width;
} else {
maxReolution = tileSize / mapJSONObj.viewer.height;
}
var resolutions = [];
var unit = Unit.METER;
if (mapJSONObj.coordUnit === Unit.DEGREE) {
unit = Unit.DEGREE;
}
if (mapJSONObj.visibleScales.length > 0) {
for (let i = 0; i < mapJSONObj.visibleScales.length; i++) {
resolutions.push(Util.scaleToResolution(mapJSONObj.visibleScales[i], dpi, unit));
}
} else {
for (let i = 0; i < level; i++) {
resolutions.push(maxReolution / Math.pow(2, i));
}
}
function sortNumber(a, b) {
return b - a;
}
var y = -tileCoord[2] - 1;
if (me.tileType === 'ZXY') {
params = '&width=' + tileSize[0] + '&height=' + tileSize[1] + '&x=' + x + '&y=' + y + '&z=' + z;
} else if (me.tileType === 'ViewBounds') {
var tileExtent = me.tileGrid.getTileCoordExtent(tileCoord);
params = '&width=' + tileSize[0] + '&height=' + tileSize[1] + '&viewBounds=' + tileExtent[0] + ',' + tileExtent[1] + ',' + tileExtent[2] + ',' + tileExtent[3];
} else {
var origin = me.tileGrid.getOrigin(z);
var resolution = me.tileGrid.getResolution(z);
var dpi = 96;
var unit = projection.getUnits() || 'degrees';
if (unit === 'degrees') {
unit = Unit.DEGREE;
}
if (unit === 'm') {
unit = Unit.METER;
}
var scale = Util.resolutionToScale(resolution, dpi, unit);
params = '&x=' + x + '&y=' + y + '&width=' + tileSize[0] + '&height=' + tileSize[1] + '&scale=' + scale + "&origin={'x':" + origin[0] + ",'y':" + origin[1] + '}';
}
return me._tileUrl + encodeURI(params);
}
_pixelToMeter(pixel) {
let view = this.map.getView();
let projection = view.getProjection();
let unit = projection.getUnits() || 'degrees';
if (unit === 'degrees') {
unit = Unit.DEGREE;
}
if (unit === 'm') {
unit = Unit.METER;
}
const res = view.getResolution();
if (unit === Unit.DEGREE) {
let meterRes= res*(Math.PI * 6378137 / 180);
return pixel * meterRes;
}else{
return pixel * res;
}
}
function getResolutions() {
var level = 17;
var dpi = 96;
var width = extent[2] - extent[0];
var height = extent[3] - extent[1];
var tileSize = width >= height ? width : height;
var maxReolution;
if (tileSize === width) {
maxReolution = tileSize / mapJSONObj.viewer.width;
} else {
maxReolution = tileSize / mapJSONObj.viewer.height;
}
var resolutions = [];
var unit = Unit.METER;
if (mapJSONObj.coordUnit === Unit.DEGREE) {
unit = Unit.DEGREE;
}
if (mapJSONObj.visibleScales.length > 0) {
var scales = initScales(mapJSONObj);
for (let i = 0; i < scales.length; i++) {
resolutions.push(Util.scaleToResolution(scales[i], dpi, unit));
}
} else {
for (let i = 0; i < level; i++) {
resolutions.push(maxReolution / Math.pow(2, i));
}
}
return resolutions;
}
function getResolutions() {
var level = 22;
var dpi = 96;
var width = (extent[2] - extent[0]);
var height = (extent[3] - extent[1]);
var tileSize = width >= height ? width : height;
var maxReolution;
if (tileSize === width) {
maxReolution = tileSize / mapJSONObj.viewer.width;
} else {
maxReolution = tileSize / mapJSONObj.viewer.height;
}
var resolutions = [];
var unit = Unit.METER;
if (mapJSONObj.coordUnit === Unit.DEGREE) {
unit = Unit.DEGREE;
}
if (mapJSONObj.visibleScalesEnabled && mapJSONObj.visibleScales && mapJSONObj.visibleScales.length > 0) {
for (let i = 0; i < mapJSONObj.visibleScales.length; i++) {
resolutions.push(Util.scaleToResolution(mapJSONObj.visibleScales[i], dpi, unit));
}
} else {
for (let i = 0; i < level; i++) {
resolutions.push(maxReolution / Math.pow(2, i));
}
}
function sortNumber(a, b) {
return b - a;
}