AnsweredAssumed Answered

Query dynamicmapservice related tables

Question asked by MoritzP12 on Oct 11, 2016

I'm using identify to return info about multiple DynamicMapServiceLayers, and using the initializeSidebar function rather than a popup. This works fine but 3 of my services contain related data in a table that I'd like to identifya layer on so that it brings back the related fields in an additional side panel that's different from the initial identify

For example I identify layer 1 - it has a field called UNIT1. That field is related to table 1 field UNIT2. I want the additional relationship identify to return all the data in the table including 'UNIT2' in a different side panel.

 

I've carried out a bit of research online but can't really understand how to return the related fields. Can anyone help?

This is the first part of my code to identify the layer:

 

function executeIdentifyTask(event) {

 

IdentifyParams.geometry = event.mapPoint;
IdentifyParams.mapExtent = map.extent;

var deferred = identifyTask
.execute(IdentifyParams)
.addCallback(function (response) {
// response is an array of identify result objects
// Let's return an array of features.
return arrayUtils.map(response, function (result) {

var feature = result.feature;

var layerName = result.layerName;

feature.attributes.layerName = layerName;
if (layerName === 'My Layer') {

var taxParcelTemplate = new InfoTemplate("",
"My layer <br/> <b>UNIT1:<b> ${UNIT1} ");

feature.setInfoTemplate(taxParcelTemplate);
}

return feature;

});
});

map.infoWindow.setFeatures([deferred]);
map.infoWindow.show(event.mapPoint);
}

 

This is the 2nd part to add the results of the identify in a side panel;

 

function initializeSidebar(map) {
var popup = map.infoWindow;

//when the selection changes update the side panel to display the popup info for the
//currently selected feature.
connect.connect(popup, "onSelectionChange", function () {
displayPopupContent(popup.getSelectedFeature());
});

//when the selection is cleared remove the popup content from the side panel.
connect.connect(popup, "onClearFeatures", function () {
//dom.byId replaces dojo.byId
//dom.byId("featureCount").innerHTML = "No features were selected, click again on the map layer";
//registry.byId replaces dijit.byId
$("#leftPane").html();
domUtils.hide(dom.byId("pager"));

 


});

//When features are associated with the map's info window update the sidebar with the new content.
connect.connect(popup, "onSetFeatures", function () {

displayPopupContent(popup.getSelectedFeature());
//dom.byId("featureCount").innerHTML = popup.features.length + " feature(s) selected";

//enable navigation if more than one feature is selected
//popup.features.length > 1 ? domUtils.show(dom.byId("pager")) : domUtils.hide(dom.byId("pager"));
});
}


function displayPopupContent(feature) {
var content = feature.getContent();
$("#leftPane").html(content);
}
}

function selectPrevious() {
map.infoWindow.selectPrevious();
}

function selectNext() {
map.infoWindow.selectNext();
}

});

Outcomes