// Destroy editor var thing2 = on(stopEdit, "click", function destroyEditor() { if (dom.byId("editDivDyn") != null) { var widgets = registry.findWidgets(editDivDyn); console.log(widgets); if (widgets) { arrayUtils.forEach(widgets, function(w) { w.destroyRecursive(); w=null; }); } domConstruct.destroy("editDivDyn"); } });
if (editorWidget) { editorWidget.destroy(); editorWidget = null; // return; }
var thing1 = on(startEdit, "click", function createEditor() { // TODO: If an editor is already there, kill it or they stack up //Editor parameters var featureLayerInfos = [{ 'featureLayer' : operationsPointLayer }]; var settings = { map : map, createOptions : { polygonDrawTools : [esri.dijit.editing.Editor.CREATE_TOOL_RECTANGLE] }, // Try referencing just the CDB layer, is this what layerInfos needs? layerInfos : featureLayerInfos }; var params = { settings : settings }; // Dynamic Div for editor eDiv1 = domConstruct.create("div", { id : "editDivDyn" }); domConstruct.place(eDiv1, "editPane_pane", "first"); dom.byId("editMessage").innerHTML = "Click 'Stop Edit' in the toolbar when you are done."; // Create editor widget and place in dynamic Div var editorWidget = new Editor(params, 'editDivDyn'); editorWidget.startup(); console.log(editorWidget); // array exists });
var thing2 = on(stopEdit, "click", function destroyEditor() { console.log(editorWidget); // undefined });
dojo.byId('leftPane').appendChild(eDiv); var editLayerInfo = editLayers; var templatePicker = new esri.dijit.editing.TemplatePicker({ featureLayers: templateLayers, rows: 'auto', columns: 'auto', //REMOVE THIS COMMA // style: 'height:98%;width:98%;' }, 'templDiv'); templatePicker.startup();
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=7, IE=9" /> <title> Default Editor </title> <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/2.4/js/dojo/dijit/themes/claro/claro.css"> <script type="text/javascript"> dojoConfig = { parseOnLoad: true }; </script> <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=2.4"> </script> <style type="text/css"> html,body { height:100%; width:100%; margin:0; } body { background-color:#fff; overflow:hidden; font-family:Helvetica; } #templatePickerPane { width:225px; overflow:hidden; } #map { margin-right:5px; padding:0; } .esriEditor .templatePicker { padding-bottom:5px; padding-top:5px; height:500px; border-radius:0px 0px 4px 4px; border:solid 1px #92A661; } </style> <script type="text/javascript"> dojo.require("esri.dijit.editing.Editor-all"); dojo.require("dijit.layout.BorderContainer"); dojo.require("dijit.layout.ContentPane"); var map, resizeTimer; var editorWidget; var editLayers; function init() { esri.config.defaults.io.proxyUrl = "../proxy/proxy.ashx"; esri.config.defaults.geometryService = new esri.tasks.GeometryService("http://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer"); var extent = new esri.geometry.Extent({ "xmin": -8576501, "ymin": 4705377, "xmax": -8574612, "ymax": 4706867, "spatialReference": { "wkid": 3857 } }); map = new esri.Map("map", { extent: extent }); dojo.connect(map, "onLoad", function() { dojo.connect(dijit.byId('map'), 'resize', function() { resizeMap(); }); }); dojo.connect(map, "onLayersAddResult", getEditableLayers); var basemap = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer"); map.addLayer(basemap); var operationsPointLayer = new esri.layers.FeatureLayer("http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/HomelandSecurity/operations/FeatureServer/0", { mode: esri.layers.FeatureLayer.MODE_ONDEMAND, outFields: ["*"] }); var operationsLineLayer = new esri.layers.FeatureLayer("http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/HomelandSecurity/operations/FeatureServer/1", { mode: esri.layers.FeatureLayer.MODE_ONDEMAND, outFields: ["*"] }); var operationsPolygonLayer = new esri.layers.FeatureLayer("http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/HomelandSecurity/operations/FeatureServer/2", { mode: esri.layers.FeatureLayer.MODE_ONDEMAND, outFields: ["*"] }); map.addLayers([operationsPointLayer, operationsPolygonLayer, operationsLineLayer]); map.infoWindow.resize(400, 300); } function getEditableLayers(results) { editLayers = dojo.map(results, function(result) { return { 'featureLayer': result.layer }; }); } //Functions to create and destroy the editor. We do this each time the edit button is clicked. function createEditor() { if (editorWidget) { return; } if (editLayers.length > 0) { //create template picker var templateLayers = dojo.map(editLayers, function (layer) { return layer.featureLayer; }); var eDiv = dojo.create("div", { id: "editDiv" }); dojo.byId('templatePickerPane').appendChild(eDiv); var editLayerInfo = editLayers; var templatePicker = new esri.dijit.editing.TemplatePicker({ featureLayers: templateLayers, rows: 'auto', columns: 'auto', style: 'height:98%;width:98%;' }, 'editDiv'); templatePicker.startup(); var settings = { map: map, templatePicker: templatePicker, layerInfos: editLayerInfo, toolbarVisible: false }; var params = { settings: settings }; editorWidget = new esri.dijit.editing.Editor(params); editorWidget.startup(); } } function destroyEditor() { if (editorWidget) { editorWidget.destroy(); editorWidget = null; } } //Handle resize of browser function resizeMap() { clearTimeout(resizeTimer); resizeTimer = setTimeout(function() { map.resize(); map.reposition(); }, 500); } dojo.addOnLoad(init); </script> </head> <body class="claro"> <div id="mainWindow" data-dojo-type="dijit.layout.BorderContainer" data-dojo-props="design:'headline',gutters:false" style="width:100%; height:100%;"> <div id="map" data-dojo-type="dijit.layout.ContentPane" data-dojo-props="region:'center'"> </div> <div data-dojo-type="dijit.layout.ContentPane" id="templatePickerPane" data-dojo-props="region:'left'"> <input type="button" onclick="createEditor();" value="Create Editor"/> <input type="button" onclick="destroyEditor();" value="Destroy Editor"/> </div> </div> </body> </html>
function toggleEditing() { if (inEditing) { $("#toolBar").hide("fast"); //HERE IS WHERE I TRIED editWidget.deactivate(); onClickListener = dojo.connect(map, "onClick", clickIdentify); inEditing = false; } else { dojo.disconnect(onClickListener); //Here is where i would need to reactivate editing mode $("#toolBar").show("fast"); inEditing = true; } }
Los miembros registrados pueden publicar, seguir actualizaciones y más. ¿Nuevo aquí? Regístrate gratis.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.