Skip to content

Instantly share code, notes, and snippets.

@swingley
Created July 26, 2013 17:21
Show Gist options
  • Save swingley/6090617 to your computer and use it in GitHub Desktop.
Save swingley/6090617 to your computer and use it in GitHub Desktop.
load class breaks renderer from a map on arcgis.com, build boxes from map clicks and use class breaks renderer to symbolize boxes
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=7, IE=9, IE=10">
<meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
<title></title>
<link rel="stylesheet" href="//js.arcgis.com/3.6/js/esri/css/esri.css">
<style>
html, body, #map {
height: 100%; width: 100%; margin: 0; padding: 0;
}
</style>
<script src="//js.arcgis.com/3.6/"></script>
<script>
var map;
require([
"esri/map",
"esri/request",
"esri/renderers/ClassBreaksRenderer",
"esri/graphic",
"esri/geometry/Extent",
"dojo/domReady!"
], function(
Map, esriRequqest, ClassBreaksRenderer, Graphic, Extent
) {
map = new Map("map", {
basemap: "streets",
center: [ 19.291, 48.343 ],
zoom: 4
});
var renderer, valMin, valMax;
// go get data from an arcgis.com map
esriRequqest({
url: "http://www.arcgis.com/sharing/rest/content/items/503dfad7cb964dd6ad1f7ee49d5dccca/data",
content: {
f: "json"
},
callbackParamName: "callback"
}).then(
function(data) {
// console.log("data", data);
var classes = data.operationalLayers[0].layerDefinition.drawingInfo.renderer;
// console.log("classes", classes);
renderer = new ClassBreaksRenderer(classes);
// console.log("renderer", renderer);
map.graphics.setRenderer(renderer);
// keep min/max values
valMin = classes.minValue + 1;
valMax = classes.classBreakInfos[classes.classBreakInfos.length - 1].classMaxValue - 1;
map.on("click", function(e) {
console.log("click");
var valSym = parseInt(Math.random() * (valMax - valMin) + valMin);
var attrs = {};
attrs[classes.field] = valSym;
var padding = (map.extent.xmax - map.extent.xmin) / 10;
var x = e.mapPoint.x;
var y = e.mapPoint.y;
var box = new Extent(x - padding, y - padding, x + padding, y + padding, map.spatialReference);
map.graphics.add(new Graphic(box, null, attrs));
console.log("added");
});
},
function(error) {
console.log("error", error);
}
);
});
</script>
</head>
<body>
<div id="map"></div>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment