Hello,
I can't seem to get it to honor the definitionExpression by switching from = new Query() to = obsLayer.createQuery();
I have one query at the start of my code that I changed:
/* Observation Layer */
const obsLayer = new FeatureLayer({
url: ".../MISIN_browsedata/MapServer/0",
outFields: ["*"],
definitionExpression: "VERIFIED = 2",
visible: false
});
/* Set query parameters to always return geometry and all fields.
Returning geometry allows us to display results on the map/view */
// var params = new Query({
// returnGeometry: true,
// outFields: ["*"]
// });
let params = obsLayer.createQuery();
params.returnGeometry = true;
params.outFields = ["*"];
and one search query section :
/*** SEARCH BY Common Name ***/
/* Query features from the observation layer */
view
.when(function () {
return obsLayer.when(function () {
//var query2 = new Query();
let query2 = obsLayer.createQuery();
query2.where = "1=1";
query2.outFields = ["Q_NAME"];
query2.returnDistinctValues = true;
query2.returnGeometry = false;
query2.orderByFields = ["Q_NAME"];
return obsLayer.queryFeatures(query2);
document.getElementById("doBtn2").addEventListener("click", doQueryCommon);
});
})
.then(addToSelect2)
function addToSelect2(values) {
var option = document.createElement("option");
option.text = "--Select--";
commonSelect.add(option);
values.features.forEach(function(value) {
var option = document.createElement("option");
option.text = value.attributes.Q_NAME;
commonSelect.add(option);
});
}
/* Call doQueryCommon() each time the button is clicked */
view.when(function () {
view.ui.add("optionsDiv", "top-right");
document.getElementById("doBtn2").addEventListener("click", doQueryCommon);
});
/* Executes each time the button is clicked.
Clears results from prev. query then builds a new query.
Executes query and calls getResults() once promise is resolved. */
function doQueryCommon() {
resultsLayer.removeAll();
var commonSelectOption = commonSelect.value.replace(/'/g, "''") //for species with apostrophes
params.where = "Q_NAME =" + "'" + commonSelectOption + "'";
obsLayer.queryFeatures(params).then(getResultsCommon).catch(promiseRejectedCommon);
loader.active = true;
}
/* Called each time promise is resolved.
Loop through each results and assign symbol and PopupTemplate */
function getResultsCommon(response) {
var cnResults = response.features.map(function (feature) {
feature.symbol = sym;
feature.popupTemplate = popupTemplate;
return feature;
});
resultsLayer.addMany(cnResults);
/* Populate DGrid Table at bottom of page with query results*/
var items = cnResults
var TableFeatures = []
array.forEach(items, function (feature) {
var TableAttributes = {}
var TableFields = Object.keys(feature.attributes)
for (var i = 0; i < TableFields.length; i++) {
TableAttributes[TableFields[i]] = feature.attributes[TableFields[i]]
}
TableFeatures.push(TableAttributes)
})
// array empty or does not exist
if (TableFeatures === undefined || TableFeatures.length == 0) {
loader.active = false;
myAlert.show();
}
var speciesmemStore = new Memory({
data: TableFeatures,
idProperty: "OBJECTID"
});
grid.set("collection", speciesmemStore);
grid.set("sort", "OBJECTID", true) // sorts objectID column - shows most recent 1st
grid.on("dgrid-select", selectedOBS);
grid.on('dgrid-deselect', clearonChange);
/* Zoom to Extent */
var AOI = response.features;
view.goTo(AOI);
}
/* Called each time promise is rejected */
function promiseRejectedCommon(error) {
console.error("Promise rejected: ", error.message);
}