Как исправить ошибку TypeError: this._url не определено в ArcGIS JS API (Query) - PullRequest
1 голос
/ 07 июня 2019

Мне поручено разработать собственный виджет для ArcGIS Web App Builder, и я пытался заставить работать запрос с использованием ArcGIS Javascript API 3.28, чтобы я мог создать отчет с использованием информации о слоях.Но при попытке проверить запрос с помощью кнопки я получаю TypeError: this._url не определено.


define(['dojo/_base/declare', 'jimu/BaseWidget',
        'jimu/dijit/Report', 'esri/layers/FeatureLayer',
        'jimu/dijit/PageUtils', 'dijit/_WidgetsInTemplateMixin', 'esri/tasks/IdentifyTask',
        'esri/tasks/IdentifyParameters', 'esri/symbols/SimpleFillSymbol', 'esri/symbols/SimpleLineSymbol',
        'esri/graphic', 'esri/Color', 'dojo/_base/lang',
        'dojo/_base/html', 'dojo/on', 'dojo/domReady!',
        'esri/tasks/QueryTask', 'esri/tasks/query'],

function(declare, BaseWidget, Report, FeatureLayer,
        PageUtils, _WidgetsInTemplateMixin, IdentifyTask, IdentifyParameters,
        SimpleFillSymbol, SimpleLineSymbol, Graphic,
        Color, lang, on, Query, QueryTaskTest) {

  var baseWidgetClass = declare([BaseWidget], {
    baseClass: 'jimu-widget-demo',

    postCreate: function() { // POST CREATE!
      this.inherited(arguments);
      this.map.infoWindow.hide();
    },

    startup: function() {
      this.inherited(arguments);
      console.log('startup');
    },

    onClose: function(){
      console.log('onClose');
    },

    _onBtnPrintClicked: function(){
    console.log("Begin query test");
    var queryUrl = "https://webportalurl/arcgis/rest/services/ServiceName/MapServer/0";
    var queryTask = new QueryTaskTest(queryUrl);
    var query = new Query();
    query.returnGeometry = false;
    query.outFields = ["*"];
    query.where = "HAB_IPTU = 2089358";
    console.log("Running execute");

    queryTask.execute(query).then(function(results){
      console.log(results.features[0]);
    });
  }

  });
  return baseWidgetClass;
});

Ответы [ 2 ]

2 голосов
/ 11 июня 2019

QueryTask на API 3.28 ожидает URL-адрес как String : https://developers.arcgis.com/javascript/3/jsapi/querytask-amd.html#querytask1

Попробуйте это:

var queryTask = new QueryTask(queryUrl);

или

var queryTask = new QueryTask("MapServerUrl");

1 голос
/ 11 июня 2019

Проблема не имеет ничего общего с QueryTask или как вы его называете.Аргументы в операторе define и определении функции не совпадают.

'dojo / _base / lang', совпадает с lang в функции, но затем 'dojo / _base / html' совпадает с on, 'dojo / on' совпадает с Query и, наконец, 'dojo /domReady!совпадает с QueryTaskTest.используйте модули, которые не требуют соответствующего конструктора в конце списка определения, в противном случае вы должны включить их в определение функции, чтобы сохранить порядок.

вот так

    define(['dojo/_base/declare',
        'jimu/BaseWidget',        
        'jimu/dijit/Report', 
        'esri/layers/FeatureLayer',
        'jimu/dijit/PageUtils',
        'dijit/_WidgetsInTemplateMixin',
        'esri/tasks/IdentifyTask',
        'esri/tasks/IdentifyParameters', 
        'esri/symbols/SimpleFillSymbol', 
        'esri/symbols/SimpleLineSymbol',
        'esri/graphic', 
        'esri/Color', 
        'dojo/_base/lang',
        'dojo/on',        
        'esri/tasks/query',
        'esri/tasks/QueryTask',
        'dojo/_base/html', //these last two are at the end
        'dojo/domReady!'], //because they don't need to be called or instantiated directly.

    function(declare, 
        BaseWidget, 
        Report, 
        FeatureLayer,
        PageUtils, 
        _WidgetsInTemplateMixin,
        IdentifyTask,
        IdentifyParameters,
        SimpleFillSymbol,
        SimpleLineSymbol,
        Graphic,
        Color,
        lang,
        on,
        Query,
        QueryTaskTest) { ....});
...