Reconnecting an event handler

867
2
Jump to solution
09-22-2014 12:59 PM
StevenGraf1
Occasional Contributor III

I created a handler using dojo.on for my executeIdentifyTask(), successfully disabled it, but now I'm having trouble getting it to reconnect after i execute a buffer.  I'm trying to follow the esri events guide here but I don't see where they reconnect using dojo/on.  My handler variable is global.  Any help is much appreciated.  Thanks!

map.on("onload", handler);

handler = map.on("click", executeIdentifyTask);

function executeIdentifyTask (event) {

//code here

}

function initToolbar(evtObj) {

handler.remove();

app.tb = new Draw(evtObj.map);

app.tb.on("draw-end", doBuffer); }

function doBuffer(evtObj) {

  var geometry = evtObj.geometry,

  map = app.map,

  gsvc = app.gsvc;

  switch (geometry.type) {

case "point":

   var symbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_SQUARE, 10, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255,0,0]), 1), new Color([0,255,0,0.25]));

   break;

case "polyline":

   var symbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASH, new Color([255,0,0]), 1);

   break;

case "polygon":

   var symbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_NONE, new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASHDOT, new Color([255,0,0]), 2), new Color([255,255,0,0.25]));

   break;

  }

      var graphic = new Graphic(geometry, symbol);

      map.graphics.add(graphic);

      //setup the buffer parameters

      var params = new BufferParameters();

      params.distances = [ dom.byId("distance").value ];

      params.bufferSpatialReference = new esri.SpatialReference({wkid: dom.byId("bufferSpatialReference").value});

      params.outSpatialReference = map.spatialReference;

      params.unit = GeometryService[dom.byId("unit").value];

      if (geometry.type === "polygon") {

        //if geometry is a polygon then simplify polygon.  This will make the user drawn polygon topologically correct.

        gsvc.simplify([geometry], function(geometries) {

          params.geometries = geometries;

          gsvc.buffer(params, showBuffer);

        });

      } else {

        params.geometries = [geometry];

        gsvc.buffer(params, showBuffer);

      }

    }

    function showBuffer(bufferedGeometries) {

      var symbol = new SimpleFillSymbol(

        SimpleFillSymbol.STYLE_SOLID,

        new SimpleLineSymbol(

          SimpleLineSymbol.STYLE_SOLID,

          new Color([255,0,0,0.65]), 2

        ),

        new Color([255,0,0,0.35])

      );

      array.forEach(bufferedGeometries, function(geometry) {

        var graphic = new Graphic(geometry, symbol);

        app.map.graphics.add(graphic);

      });

      app.tb.deactivate();

      app.map.showZoomSlider();

    }

0 Kudos
1 Solution

Accepted Solutions
TimWitt2
MVP Alum

Steven,

after your buffering is done just put the following code (should be after the app.map.showZoomSlider(); line):

handler = map.on("click", executeIdentifyTask);

this will reconnect the handler.

Hope this helps!

Tim

View solution in original post

0 Kudos
2 Replies
TimWitt2
MVP Alum

Steven,

after your buffering is done just put the following code (should be after the app.map.showZoomSlider(); line):

handler = map.on("click", executeIdentifyTask);

this will reconnect the handler.

Hope this helps!

Tim

0 Kudos
StevenGraf1
Occasional Contributor III

Thanks!  I was leaving out handler =

0 Kudos