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
The technique used here could also be used to get info about a map service or any other service published to the services directory.
<!DOCTYPE html>
<html>
<head>
<title>Get ArcGIS Server Map Service Layer Field Names</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="https://js.arcgis.com/3.26/esri/css/esri.css">
<style>
body{
font-family: "Arial Unicode MS, Arial, sans-serif";
}
#content {
width: 800px; height: 350px; padding: 5px; overflow: auto;
border: solid 2px #AAAAAA; background-color: #FFFFFF;
-moz-border-radius: 5px; -webkit-border-radius: 5px; -o-border-radius: 5px; border-radius: 5px;
-moz-box-shadow: 0 0 0.5em black; -webkit-box-shadow: 0 0 0.5em black; -o-box-shadow: 0 0 0.5em black; box-shadow: 0 0 0.5em black;
}
.failure { color: red; }
#status { font-size: 12px; }
</style>
<script src="https://js.arcgis.com/3.26/"></script>
<script>
require(["dojo/dom", "dojo/on", "dojo/dom-class", "dojo/_base/json", "dojo/_base/array", "dojo/string", "esri/request", "dojo/domReady!"], function(dom, on, domClass, dojoJson, array, dojoString, esriRequest) {
dom.byId("url").value = "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/ArcGIS/rest/services/ZillowNeighborhoods-CA/FeatureServer/0";
dom.byId("content").value = "";
//handle the Go button's click event
on(dom.byId("submitRequest"), "click", getContent);
function getContent(){
var contentDiv = dom.byId("content");
contentDiv.value = "";
domClass.remove(contentDiv, "failure");
dom.byId("status").innerHTML = "Downloading...";
//get the url and setup a proxy
var url = dom.byId("url").value;
if(url.length === 0){
alert("Please enter a URL");
return;
}
var requestHandle = esriRequest({
"url": url,
"content": {
"f": "json"
},
"callbackParamName": "callback"
});
requestHandle.then(requestSucceeded, requestFailed);
}
function requestSucceeded(response, io){
var fieldInfo, pad;
pad = dojoString.pad;
//toJson converts the given JavaScript object
//and its properties and values into simple text
dojoJson.toJsonIndentStr = " ";
console.log("response as text:\n", dojoJson.toJson(response, true));
dom.byId("status").innerHTML = "";
//show field names and aliases
if ( response.hasOwnProperty("fields") ) {
console.log("got some fields");
fieldInfo = array.map(response.fields, function(f) {
return pad("Field:", 8, " ", true) + pad(f.name, 25, " ", true) +
pad("Alias:", 8, " ", true) + pad(f.alias, 25, " ", true) +
pad("Type:", 8, " ", true) + pad(f.type, 25, " ", true);
});
dom.byId("content").value = fieldInfo.join("\n");
} else {
dom.byId("content").value = "No field info found. Please double-check the URL.";
}
}
function requestFailed(error, io){
domClass.add(dom.byId("content"), "failure");
dojoJson.toJsonIndentStr = " ";
dom.byId("content").value = dojoJson.toJson(error, true);
}
});
</script>
</head>
<body>
<p>Enter the URL for a layer in a map service to access metadata about a layer in a map service using esriRequest.</p>
<p>
<input type="text" id="url" size="105"/>
<input id="submitRequest" type="button" value="GO" />
<span id="status"></span>
</p>
<h2>Content</h2>
<p>Check the console for the full response. Here we'll display Field names, aliases and types:</p>
<textarea id="content"></textarea>
</body>
</html>