Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //req for layout
- dojo.require("dijit.layout.BorderContainer");
- dojo.require("dijit.layout.ContentPane");
- dojo.require("dijit.layout.AccordionContainer");
- //req for map to show up and layers
- dojo.require("esri.map");
- dojo.require("esri.layers.FeatureLayer");
- //req for measurement widget
- dojo.require("dijit.form.CheckBox");
- dojo.require("esri.dijit.Scalebar");
- dojo.require("esri.dijit.Measurement");
- dojo.require("esri.SnappingManager");
- //edit widget
- dojo.require("dijit.Toolbar");
- dojo.require("esri.dijit.editing.Editor-all");
- //legend widget
- dojo.require("esri.dijit.Legend");
- dojo.require("dojox.grid.DataGrid");
- dojo.require("dojo.data.ItemFileReadStore");
- dojo.require("esri.tasks.find");
- var map;
- var editorWidget;
- var legendLayers = [];
- var findTask, findParams;
- function init() {
- //necessary for measurement widget!
- esri.config.defaults.io.proxyUrl = "/proxy.ashx";
- esri.config.defaults.io.alwaysUseProxy = false;
- esri.config.defaults.geometryService = new esri.tasks.GeometryService("http://ingisd01/ArcGIS/rest/services/Geometry/GeometryServer");
- //create a map
- map = new esri.Map("map", {
- zoom: 1
- });
- //layers
- var baselayer = new esri.layers.ArcGISTiledMapServiceLayer("http://ingisd01/ArcGIS/rest/services/Tokanui/tokanui_imagery_nztm/MapServer");
- map.addLayer(baselayer);
- paddocks = new esri.layers.FeatureLayer("http://ingisd01/arcgis/rest/services/Tokanui/tokanui_paddock_test/FeatureServer/0", { outFields: ['*'] });
- soils = new esri.layers.ArcGISDynamicMapServiceLayer("http://ingisd01/ArcGIS/rest/services/Tokanui/tokanui_soils_nztm/MapServer");
- map.addLayer(soils);
- legendLayers.push({ layer: paddocks, title: 'Paddocks' });
- legendLayers.push({ layer: soils, title: 'Soils' });
- //resize with browser
- dojo.connect(map, 'onLoad', function () {
- //resize the map when the browser resizes
- dojo.connect(dijit.byId('map'), 'resize', map, map.resize);
- });
- //after map loads, connect to listen to mouse move & drag events
- dojo.connect(map, "onLoad", function () {
- dojo.connect(map, "onMouseMove", showCoordinates);
- dojo.connect(map, "onMouseDrag", showCoordinates);
- dojo.connect(map, "onClick", addPoint);
- });
- //Measurement widget colour of lines
- var sfs = new esri.renderer.SimpleRenderer(new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID,
- new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID,
- new dojo.Color([255, 0, 0]), 2), new dojo.Color([180,180,180,0.15]), null));
- paddocks.setRenderer(sfs);
- //starts measurement widget, snaps to 'paddocks' layer and places widget in 'measurementDiv'
- dojo.connect(map, "onLayersAddResult", function () {
- var snapManager = map.enableSnapping({ snapKey: dojo.keys.copyKey });
- var layerInfos = [{ layer: paddocks }];
- snapManager.setLayerInfos(layerInfos);
- var measurement = new esri.dijit.Measurement({
- map: map
- }, dojo.byId('measurementDiv'));
- measurement.startup();
- });
- dojo.connect(map, 'onLayersAddResult', function (results) {
- var legendDijit = new esri.dijit.Legend({
- map: map,
- layerInfos: legendLayers
- }, "legendDiv");
- legendDijit.startup();
- }
- );
- map.addLayers([paddocks]);
- dojo.connect(map, "onLayersAddResult", initEditor);
- //create find task with url to map service
- findTask = new esri.tasks.FindTask("http://ingisd01/ArcGIS/rest/services/Tokanui/tokanui_paddock_test/FeatureServer");
- //create find parameters and define known values
- findParams = new esri.tasks.FindParameters();
- findParams.returnGeometry = true;
- findParams.layerIds = [0];
- findParams.searchFields = ["PadID","Caption"];
- }
- function execute(searchText) {
- //set the search text to find parameters
- findParams.searchText = searchText;
- findTask.execute(findParams, showResults);
- }
- function showResults(results) {
- //symbology for graphics
- var markerSymbol = new esri.symbol.SimpleMarkerSymbol(esri.symbol.SimpleMarkerSymbol.STYLE_SQUARE, 10, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0]), 1), new dojo.Color([0, 255, 0, 0.25]));
- var lineSymbol = new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_DASH, new dojo.Color([255, 0, 0]), 1);
- var polygonSymbol = new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_NONE, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_DASHDOT, new dojo.Color([255, 0, 0]), 2), new dojo.Color([255, 255, 0, 0.25]));
- //find results return an array of findResult.
- map.graphics.clear();
- var dataForGrid = [];
- //Build an array of attribute information and add each found graphic to the map
- dojo.forEach(results, function (result) {
- var graphic = result.feature;
- dataForGrid.push([result.layerName, result.foundFieldName, result.value]);
- switch (graphic.geometry.type) {
- case "point":
- graphic.setSymbol(markerSymbol);
- break;
- case "polyline":
- graphic.setSymbol(lineSymbol);
- break;
- case "polygon":
- graphic.setSymbol(polygonSymbol);
- break;
- }
- map.graphics.add(graphic);
- });
- var data = {
- items: dataForGrid
- };
- var store = new dojo.data.ItemFileReadStore({
- data: data
- });
- grid.setStore(store);
- }
- //mouse coordinates
- function showCoordinates(evt) {
- //get mapPoint from event
- //The map is in web mercator - modify the map point to display the results in geographic
- var mp = esri.geometry.webMercatorToGeographic(evt.mapPoint);
- //display mouse coordinates
- dojo.byId("info3").innerHTML = mp.x.toFixed(3) + ", " + mp.y.toFixed(3);
- }
- //previous click coordinates
- function addPoint(evt) {
- map.infoWindow.setTitle("Coordinates");
- //Need to convert the coordinates from the map's spatial reference (web mercator) to geographic to display lat/lon values
- var geoPt = esri.geometry.webMercatorToGeographic(evt.mapPoint);
- dojo.byId("info2").innerHTML = "lat/lon : " + geoPt.y.toFixed(2) + ", " + geoPt.x.toFixed(2) +
- "<br />screen x/y : " + evt.screenPoint.x + ", " + evt.screenPoint.y;
- }
- function initEditor(results) {
- //build the layer and field information for the layer, display the description field using a text area.
- var layers = dojo.map(results, function (result) {
- var fieldInfos = dojo.map(result.layer.fields, function (field) {
- if (field.name === 'Caption') {
- return { 'fieldName': 'Caption', 'label': 'Caption', stringFieldOption: esri.dijit.AttributeInspector.STRING_FIELD_OPTION_TEXTAREA };
- }
- else {
- return { 'fieldName': field.name, 'label': field.alias };
- }
- });
- return { featureLayer: result.layer, 'fieldInfos': fieldInfos };
- });
- var settings = {
- map: map,
- enableUndoRedo: true,
- layerInfos: layers,
- toolbarVisible: true,
- createOptions: {
- polygonDrawTools: [
- esri.dijit.editing.Editor.CREATE_TOOL_FREEHAND_POLYGON,
- esri.dijit.editing.Editor.CREATE_TOOL_AUTOCOMPLETE
- ]
- },
- toolbarOptions: {
- reshapeVisible: true,
- cutVisible: true,
- mergeVisible: true
- }
- };
- var params = { settings: settings };
- editorWidget = new esri.dijit.editing.Editor(params, 'editorDiv');
- //create a new checkbox to enable/disable snapping
- var checkBox = new dijit.form.CheckBox({
- name: "chkSnapping",
- checked: true,
- id: "chkSnapping",
- label: "Snapping",
- showLabel: "false",
- title: "Snapping",
- onChange: function (evt) {
- console.log(this.checked);
- if (this.checked) {
- map.enableSnapping({ snapKey: dojo.keys.copyKey });
- } else {
- map.disableSnapping();
- }
- }
- });
- //add the snapping checkbox to the editor's toolbar
- var myToolbarElement = dojo.query(".esriDrawingToolbar", editorWidget.domNode)[0];
- var myToolbar = dijit.byId(myToolbarElement.id);
- myToolbar.addChild(new dijit.ToolbarSeparator());
- myToolbar.addChild(checkBox);
- editorWidget.startup();
- //listen for the template pickers onSelectionChange and disable
- //the snapping checkbox when a template is selected
- var templatePickerElement = dojo.query(".esriTemplatePicker", editorWidget.domNode)[0];
- var templatePicker = dijit.byId(templatePickerElement.id);
- dojo.connect(templatePicker, "onSelectionChange", function () {
- if (templatePicker.getSelected()) {
- //disable the snapping checkbox
- dijit.byId('chkSnapping').set("disabled", true);
- } else {
- dijit.byId('chkSnapping').set("disabled", false);
- }
- });
- map.infoWindow.resize(325, 200);
- }
- dojo.ready(init);
Advertisement
Add Comment
Please, Sign In to add comment