AnsweredAssumed Answered

Accessing Map from Widget code

Question asked by evtguy on May 21, 2018
Latest reply on May 22, 2018 by evtguy

I'm likely making a stupid mistake but right now I'm not seeing it. I'm getting my feet wet with WAB Developer Edition 2.8 and I'm making a simple widget (based on demo widget template in the samplewidgets folder). In my widget, the user specifies a township/range/section and the map zooms to that location. Here's the widget:



Simple stuff. My code works up to the point of updating the map extent. I get an error that the "Object doesn't support property or method 'setExtent'". From my search, I feel like I'm referencing the map the right way but clearly I'm not. What am I missing?


There's not much to it but here's my widget.js code:


define(['dojo/_base/declare', 'dojo/dom', 'dojo/on', 'esri/tasks/query', 'esri/tasks/QueryTask', 'jimu/BaseWidget'],
function(declare, dom, on, Query, QueryTask, BaseWidget) {
  //To create a widget, you need to derive from BaseWidget.
  return declare([BaseWidget], {
    // DemoWidget code goes here

    //please note that this property is be set by the framework when widget is loaded.
    //templateString: template,

    baseClass: 'jimu-widget-demo',

    postCreate: function() {

    startup: function() {
        this.mapIdNode.innerHTML = 'map id:' +;
        on(dom.byId("zoomButton"), "click", function() {               
               var queryString = "Township=" + dom.byId('townshipNum').value + " AND TWP_CHAR='" + dom.byId('townshipDir').value + "' AND RANGE=" + dom.byId('rangeNum').value;
               queryString = queryString + " AND RNG_CHAR='" +dom.byId('rangeDir').value + "' AND SECTION=" + dom.byId('sectionNum').value;
            var query = new Query();
               query.returnGeometry = true;
               query.where = queryString;
            var qTask = new QueryTask("");
               qTask.execute(query, function(results) {
                    if (results.features.length != 1) {
                         alert('There was an issue zooming into your Township/Range/Section.');
                    } else {
                    var plssGeom = results.features[0].geometry;

    onOpen: function(){

    onClose: function(){

    onMinimize: function(){

    onMaximize: function(){


The error happens on line 35 in my code above. Should my code be in a different event function instead of startup?