How to get the name of the country name?

1398
4
03-26-2021 04:05 AM
SiyabongaKubeka
Occasional Contributor

Hi All,

I am trying to retrieve the country name. How can I do that? Below is my code that I use to retrieve the province, district municipality, local municipality and wards:

var query = new Query();
query.geometry = view.toMap(event);
query.distance = 0;
query.units = "meters";
query.spatialRelationship = "intersects";
query.returnGeometry = true;
query.outFields = [ "PROVINCE", "DCS12_NAME", "S12_NAME", "WARD_NO" ];

queryTask.execute(query).then(function(results){

var feat = results.features[0];
provinces = feat.attributes.PROVINCE;
wards = feat.attributes.WARD_NO;
districts = feat.attributes.DCS12_NAME;
municipalities = feat.attributes.S12_NAME

showWards.push(wards);
var xwards = showWards.toString();

console.log(provinces);
console.log(wards);
console.log(districts);
console.log(municipalities);
console.log(xwards);

I have tried using 

query.outFields = [ "COUNTRY","PROVINCE", "DCS12_NAME", "S12_NAME", "WARD_NO" ];

but it is not working. Please assist

Kind Regards

Siyabonga Kubeka

0 Kudos
4 Replies
JeffreyWilkerson
Occasional Contributor III

For your query, I don't see a 'where' clause or a geometry being sent.  The query needs to query by tabular values (where) or by spatial location (geometry).  Also, I don't see the queryTask being instantiated, at which point you would identify the URL (layer) that you would be querying.  Take a look at the queryTask page for more information:

QueryTask 

Also, I would add an error catcher to see just what is going on, as in:

queryTask.execute(query).then(function(results) {
	console.log(results);
}
.catch(function (error) {
	console.error("Query Error: " + error);
});
SiyabongaKubeka
Occasional Contributor

Hi Jeffery, 

I tried putting this, but I get an error saying .catch is not a function. Please see my complete code below:

<html><head>


<meta charset="utf-8">
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">

<title>GIS Map for CRM</title>

<link href="https://js.arcgis.com/4.14/esri/themes/light/main.css" rel="stylesheet">
<script src="https://js.arcgis.com/4.14/"></script>

<style>
html,
#viewDiv {
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}

.esri-sketch__section.esri-sketch__tool-section:last-of-type {
display: none;
}

.esri-sketch__section.esri-sketch__tool-section:nth-child(2) {
border-right: none;
}
</style>
<script>
var lon;
var lat;
var crmLatitude;
var crmLongitude;
var latlon;
var provinces;
var municipalities;
var districts;
var wards;
var showWards = [];
var testVariable;
require([
"esri/Map",
"esri/views/MapView",
"esri/WebMap",
"esri/layers/FeatureLayer",
"esri/tasks/QueryTask",
"esri/tasks/support/Query",
"esri/config",
"esri/widgets/Sketch",
"esri/layers/GraphicsLayer"],



function(Map, MapView, WebMap, FeatureLayer, QueryTask, Query,
esriConfig, Sketch, GraphicsLayer) {
esriConfig.portalUrl = "https://portal.environment.gov.za/portal";

const featureLayerUrl = 'https://portal.environment.gov.za/server/rest/services/Boundary/Wards/MapServer/0';
var webmap = new WebMap({
portalItem: {
id: "04582be14885483da48f29398960f653"
}
});

var graphicsLayer = new GraphicsLayer();

var view = new MapView({
map: webmap,
container: "viewDiv",
popup: null
});

var featureLayer = new FeatureLayer({
url: featureLayerUrl
});

webmap.add(featureLayer);

webmap.layers.add(graphicsLayer);

var sketch = new Sketch({
layer: graphicsLayer,
view: view,
availableCreateTools: ["polygon"],
creationMode: "update",

});



view.ui.add(sketch, {
position: "top-right"
});


sketch.on('create', function (event) {
// check if the create event's state has changed to complete indicating
// the graphic create operation is completed.
if (event.state === "complete") {

if (view.zoom >= 11) {
let gra = event.graphic.clone();
event.graphic.layer.removeAll();
gra.symbol.color = "red";
gra.layer.add(gra);
console.log(view.zoom);
console.log("X = ", gra.geometry.x);
console.log("Y = ", gra.geometry.y);
console.log("Lat = ", event.graphic.geometry.latitude);
console.log("Long = ", event.graphic.geometry.longitude);
lat = event.graphic.geometry.latitude;
lon = event.graphic.geometry.longitude;
zoomLevel = view.zoom;
for (var i = 0; i < gra.geometry.rings.length; i++){
for (var p = 0; p < gra.geometry.rings[i].length; p++){
crmLatitude = String(gra.geometry.getPoint(i, p));
crmLongitude = String(gra.geometry.getPoint(i, p));
var LatLon = String(gra.geometry.rings[i][p]);
console.log(LatLon);
latlon = LatLon;
}
}
debugger;
}
else{
alert("please zoom in");
event.graphic.layer.remove(event.graphic);
}
}

});

view.on('click', function(event){
var queryTask = new QueryTask({
url: featureLayerUrl
});
var query = new Query();
query.geometry = view.toMap(event);
query.distance = 0;
query.units = "meters";
query.spatialRelationship = "intersects";
query.returnGeometry = true;
query.outFields = [ "PROVINCE", "DCS12_NAME", "S12_NAME", "WARD_NO" ];

queryTask.execute(query).then(function(results){

var feat = results.features[0];
provinces = feat.attributes.PROVINCE;
wards = feat.attributes.WARD_NO;
districts = feat.attributes.DCS12_NAME;
municipalities = feat.attributes.S12_NAME

showWards.push(wards);
var xwards = showWards.toString();

console.log(provinces);
console.log(wards);
console.log(districts);
console.log(municipalities);

console.log(xwards);


//Call to CRM to populate the lookup field for Province

debugger;

window.parent.Xrm.WebApi.online.retrieveMultipleRecords("dea_province", "?$select=dea_name,dea_provinceid&$filter=dea_name eq '" + provinces + "'").then(
function success(results) {
debugger;
for (var i = 0; i < results.entities.length; i++) {
var dea_name = results.entities[i]["dea_name"];
var dea_provinceid = results.entities[i]["dea_provinceid"];

//Populate lookup
var lookupValue = new Array();
lookupValue[0] = new Object();
lookupValue[0].id = dea_provinceid; // GUID of the lookup id
lookupValue[0].name = dea_name; // Name of the lookup
lookupValue[0].entityType = "dea_province"; //Entity Type of the lookup entity
window.parent.Xrm.Page.getAttribute("dea_province").setValue(lookupValue);
}
},
function(error) {
Xrm.Utility.alertDialog(error.message);
}
);

//Call to CRM to populate the lookup field for the Local Municipality

window.parent.Xrm.WebApi.online.retrieveMultipleRecords("dea_localmunicipality", "?$select=dea_localmunicipalityid,dea_name&$filter=dea_name eq '" + municipalities + "'").then(
function success(results) {
for (var i = 0; i < results.entities.length; i++) {
var dea_localmunicipalityid = results.entities[i]["dea_localmunicipalityid"];
var dea_name = results.entities[i]["dea_name"];

//Populate lookup
var lookupValue = new Array();
lookupValue[0] = new Object();
lookupValue[0].id = dea_localmunicipalityid; // GUID of the lookup id
lookupValue[0].name = dea_name; // Name of the lookup
lookupValue[0].entityType = "dea_localmunicipality"; //Entity Type of the lookup entity
window.parent.Xrm.Page.getAttribute("dea_localmunicipality").setValue(lookupValue);
}
},
function(error) {
Xrm.Utility.alertDialog(error.message);
}
);

//Call to CRM to populate the lookup field for District Municipality

window.parent.Xrm.WebApi.online.retrieveMultipleRecords("dea_districtmunicipality", "?$select=dea_districtmunicipalityid,dea_name&$filter=dea_name eq '" + districts + "'").then(
function success(results) {
for (var i = 0; i < results.entities.length; i++) {
var dea_districtmunicipalityid = results.entities[i]["dea_districtmunicipalityid"];
var dea_name = results.entities[i]["dea_name"];

//Populate lookup
var lookupValue = new Array();
lookupValue[0] = new Object();
lookupValue[0].id = dea_districtmunicipalityid; // GUID of the lookup id
lookupValue[0].name = dea_name; // Name of the lookup
lookupValue[0].entityType = "dea_districtmunicipality"; //Entity Type of the lookup entity
window.parent.Xrm.Page.getAttribute("dea_districtmunicipality").setValue(lookupValue);
}
},
function(error) {
Xrm.Utility.alertDialog(error.message);
}
);

//Populate the coordinates field
debugger;
window.parent.Xrm.Page.getAttribute("dea_latitude").setValue(latlon);
window.parent.Xrm.Page.getAttribute("dea_longitude").setValue(latlon);
window.parent.Xrm.Page.getAttribute("dea_ward").setValue(xwards);
//THE END OF CALLS TO CRM
}
.catch(function (error) {
console.error("Query Error: " + error);
}));

});
});


</script>
<meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta><meta></head>

<body style="overflow-wrap: break-word;">
<div id="viewDiv"></div>

</body></html>

 

Here is the error code

SiyabongaKubeka_1-1617003957666.png

 

0 Kudos
JeffreyWilkerson
Occasional Contributor III

You needed another parenthesis, or right round bracket before the catch, to finish off the 'then' function from the query.  My guess is that you added one at the end of the catch to make it compile, but that should only be 1 right parenthesis, round bracket.  Try this:

queryTask.execute(query).then(function(results){

    var feat = results.features[0];
    provinces = feat.attributes.PROVINCE;
    wards = feat.attributes.WARD_NO;
    districts = feat.attributes.DCS12_NAME;
    municipalities = feat.attributes.S12_NAME

    showWards.push(wards);
    var xwards = showWards.toString();

    console.log(provinces);
    console.log(wards);
    console.log(districts);
    console.log(municipalities);
    console.log(xwards);

    //Call to CRM to populate the lookup field for Province
    debugger;

    window.parent.Xrm.WebApi.online.retrieveMultipleRecords("dea_province", "?$select=dea_name,dea_provinceid&$filter=dea_name eq '" + provinces + "'").then(
        function success(results) {
            debugger;
            for (var i = 0; i < results.entities.length; i++) {
                var dea_name = results.entities[i]["dea_name"];
                var dea_provinceid = results.entities[i]["dea_provinceid"];

                //Populate lookup
                var lookupValue = new Array();
                lookupValue[0] = new Object();
                lookupValue[0].id = dea_provinceid; // GUID of the lookup id
                lookupValue[0].name = dea_name; // Name of the lookup
                lookupValue[0].entityType = "dea_province"; //Entity Type of the lookup entity
                window.parent.Xrm.Page.getAttribute("dea_province").setValue(lookupValue);
            }
        },
        function(error) {
            Xrm.Utility.alertDialog(error.message);
        }
    );

    //Call to CRM to populate the lookup field for the Local Municipality

    window.parent.Xrm.WebApi.online.retrieveMultipleRecords("dea_localmunicipality", "?$select=dea_localmunicipalityid,dea_name&$filter=dea_name eq '" + municipalities + "'").then(
        function success(results) {
            for (var i = 0; i < results.entities.length; i++) {
                var dea_localmunicipalityid = results.entities[i]["dea_localmunicipalityid"];
                var dea_name = results.entities[i]["dea_name"];

                //Populate lookup
                var lookupValue = new Array();
                lookupValue[0] = new Object();
                lookupValue[0].id = dea_localmunicipalityid; // GUID of the lookup id
                lookupValue[0].name = dea_name; // Name of the lookup
                lookupValue[0].entityType = "dea_localmunicipality"; //Entity Type of the lookup entity
                window.parent.Xrm.Page.getAttribute("dea_localmunicipality").setValue(lookupValue);
            }
        },
        function(error) {
            Xrm.Utility.alertDialog(error.message);
        }
    );

    //Call to CRM to populate the lookup field for District Municipality

    window.parent.Xrm.WebApi.online.retrieveMultipleRecords("dea_districtmunicipality", "?$select=dea_districtmunicipalityid,dea_name&$filter=dea_name eq '" + districts + "'").then(
        function success(results) {
            for (var i = 0; i < results.entities.length; i++) {
                var dea_districtmunicipalityid = results.entities[i]["dea_districtmunicipalityid"];
                var dea_name = results.entities[i]["dea_name"];

                //Populate lookup
                var lookupValue = new Array();
                lookupValue[0] = new Object();
                lookupValue[0].id = dea_districtmunicipalityid; // GUID of the lookup id
                lookupValue[0].name = dea_name; // Name of the lookup
                lookupValue[0].entityType = "dea_districtmunicipality"; //Entity Type of the lookup entity
                window.parent.Xrm.Page.getAttribute("dea_districtmunicipality").setValue(lookupValue);
            }
        },
        function(error) {
            Xrm.Utility.alertDialog(error.message);
        }
    );

    //Populate the coordinates field
    debugger;
    window.parent.Xrm.Page.getAttribute("dea_latitude").setValue(latlon);
    window.parent.Xrm.Page.getAttribute("dea_longitude").setValue(latlon);
    window.parent.Xrm.Page.getAttribute("dea_ward").setValue(xwards);
    //THE END OF CALLS TO CRM
})
.catch(function (error) {
    console.error("Query Error: " + error);
});
SiyabongaKubeka
Occasional Contributor

Hi Jeffery 

Thank you very much, it now works.

0 Kudos