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();
}
Solved! Go to Solution.
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
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
Thanks! I was leaving out handler =