Hide Table of Contents
Analysis
Data Reviewer
Dynamic Layers
Editing
Feature Layers
Feature Table
Graphics
Map
Mobile
Online and Portal
Popups and Info Windows
Query and Select
Renderers, Symbols, Visualization
Search
This sample shows how to read map and layer properties and report the information back to the user.
<!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>ArcGIS JavaScript API Map Layer</title>
<link rel="stylesheet" href="https://js.arcgis.com/3.29/dijit/themes/tundra/tundra.css">
<link rel="stylesheet" href="https://js.arcgis.com/3.29/esri/css/esri.css">
<style>
html, body { height: 100%; width: 100%; margin: 0; padding: 0; }
</style>
<script src="https://js.arcgis.com/3.29/"></script>
<script>
require([
"dojo/ready",
"dojo/parser",
"dojo/_base/array",
"dojo/dom",
"dojo/dom-prop",
"esri/map",
"esri/layers/ArcGISDynamicMapServiceLayer",
"esri/layers/ArcGISTiledMapServiceLayer",
"dijit/layout/BorderContainer",
"dijit/layout/ContentPane"
], function(
ready, parser, array, dom, domProp,
Map, ArcGISDynamicMapServiceLayer, ArcGISTiledMapServiceLayer
) {
ready(function() {
// parse layout dijits
parser.parse();
var map = new Map("mapDiv");
var basemap = new ArcGISTiledMapServiceLayer("https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/TaxParcel/AssessorsBasemap/MapServer");
map.addLayer(basemap);
var census = new ArcGISDynamicMapServiceLayer("https://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer", {
"id": "census",
"opacity": 0.5
});
map.addLayer(census);
map.on("load", function(evt) {
//display layer details in the bottom content pane
var layerInfo = [], map = evt.map;
array.forEach(map.layerIds, function(id) {
var layer = map.getLayer(id);
layerInfo.push("id: " + layer.id + " visible: " + layer.visible + " opacity: " + layer.opacity + "<br />");
});
var sr = "Spatial Reference: " + map.spatialReference.wkid + "<br />";
var size = "Width: " + map.width + " Height: " + map.height + "<br />";
//get scale detail
var tileInfo = basemap.tileInfo;
var scales = [];
array.forEach(tileInfo.lods, function(lod) {
var level = lod.level;
var scale = lod.scale;
var resolution = lod.resolution;
scales.push("level: " + level + " scale: " + scale + " resolution: " + resolution + "<br />");
});
domProp.set("mapInfo", "innerHTML", "<b>Layers:</b><br />" + layerInfo.join("") +
"<b>Spatial Reference:</b> <br /> " + sr +
"<b>Map Size:</b> <br />" + size +
"<b>Scales:</b><br />" + scales.join("")
);
});
//Update the extent info in the layer details panel when the map's extent changes
map.on("extent-change", function(evt) {
var s = "<b>Extent</b><br />",
extent = evt.extent;
s += "XMin: " + extent.xmin.toFixed(4) + " " + "YMin: " + extent.ymin.toFixed(4) + " " + "XMax: " + extent.xmax.toFixed(4) + " " + "YMax: " + extent.ymax.toFixed(4);
domProp.set(dom.byId("currentInfo"), "innerHTML", s);
});
});
});
</script>
</head>
<body class="tundra">
<div id="content"
data-dojo-type="dijit/layout/BorderContainer"
data-dojo-props="design:'headline', gutters:true"
style="width: 100%; height: 100%; margin: 0;">
<div id="mapDiv"
data-dojo-type="dijit/layout/ContentPane"
data-dojo-props="region:'center'"
style="overflow:hidden;">
</div>
<div id="bottomPane"
style="height:200px;"
data-dojo-type="dijit/layout/ContentPane"
data-dojo-props="region:'bottom'">
<div id="currentInfo"></div>
<div id="mapInfo"></div>
</div>
</div>
</body>
</html>