// 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; } }
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.