<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic How do get longitude and latitude for each vertex of each polygon in JavaScript? in ArcGIS JavaScript Maps SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-do-get-longitude-and-latitude-for-each-vertex/m-p/1063470#M73350</link>
    <description>&lt;P&gt;Hi Everyone&lt;/P&gt;&lt;P&gt;I need you assistance or advice, I have a webmap and I can draw multiple polygons on it. I want to be able to get the coordinates of each vertex (corner or ring) of each polygon.&amp;nbsp; Below is the javascript code that is currently running.&lt;/P&gt;&lt;P&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;BR /&gt;&amp;lt;html&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;head&amp;gt;&lt;BR /&gt;&amp;lt;meta charset="utf-8"&amp;gt;&lt;BR /&gt;&amp;lt;meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no"&amp;gt;&lt;BR /&gt;&amp;lt;title&amp;gt;Sketch temporary geometries - 4.9&amp;lt;/title&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;link rel="stylesheet" href="&lt;A href="https://js.arcgis.com/4.9/esri/css/main.css" target="_blank"&gt;https://js.arcgis.com/4.9/esri/css/main.css&lt;/A&gt;"&amp;gt;&lt;BR /&gt;&amp;lt;script src="&lt;A href="https://js.arcgis.com/4.9/" target="_blank"&gt;https://js.arcgis.com/4.9/&lt;/A&gt;"&amp;gt;&amp;lt;/script&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;style&amp;gt;&lt;BR /&gt;html,&lt;BR /&gt;body,&lt;BR /&gt;#viewDiv {&lt;BR /&gt;padding: 0;&lt;BR /&gt;margin: 0;&lt;BR /&gt;height: 100%;&lt;BR /&gt;width: 100%;&lt;BR /&gt;font-family: verdana;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;#topbar {&lt;BR /&gt;background: #fff;&lt;BR /&gt;position: absolute;&lt;BR /&gt;top: 15px;&lt;BR /&gt;right: 15px;&lt;BR /&gt;padding: 10px;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;.action-button {&lt;BR /&gt;font-size: 16px;&lt;BR /&gt;background-color: transparent;&lt;BR /&gt;border: 1px solid #D3D3D3;&lt;BR /&gt;color: #6e6e6e;&lt;BR /&gt;height: 32px;&lt;BR /&gt;width: 32px;&lt;BR /&gt;text-align: center;&lt;BR /&gt;box-shadow: 0 0 1px rgba(0, 0, 0, 0.3);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;.action-button:hover,&lt;BR /&gt;.action-button:focus {&lt;BR /&gt;background: #0079c1;&lt;BR /&gt;color: #e4e4e4;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;.active {&lt;BR /&gt;background: #0079c1;&lt;BR /&gt;color: #e4e4e4;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;lt;/style&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;script&amp;gt;&lt;BR /&gt;var lon;&lt;BR /&gt;var lat;&lt;BR /&gt;var crmLatitude;&lt;BR /&gt;var crmLongitude;&lt;BR /&gt;var latlon;&lt;BR /&gt;var provinces;&lt;BR /&gt;var municipalities;&lt;BR /&gt;var districts;&lt;BR /&gt;var wards;&lt;BR /&gt;var showWards = [];&lt;BR /&gt;var testVariable;&lt;BR /&gt;require([&lt;BR /&gt;"esri/Map",&lt;BR /&gt;"esri/views/MapView",&lt;BR /&gt;"esri/WebMap",&lt;BR /&gt;"esri/widgets/Sketch/SketchViewModel",&lt;BR /&gt;"esri/Graphic",&lt;BR /&gt;"esri/layers/GraphicsLayer",&lt;BR /&gt;"esri/layers/FeatureLayer",&lt;BR /&gt;"esri/widgets/Expand",&lt;BR /&gt;"esri/widgets/FeatureForm",&lt;BR /&gt;"esri/config",&lt;BR /&gt;"esri/tasks/QueryTask",&lt;BR /&gt;"esri/tasks/support/Query",&lt;BR /&gt;"esri/widgets/ScaleBar"&lt;BR /&gt;], function (&lt;BR /&gt;Map, MapView, WebMap, SketchViewModel, Graphic, GraphicsLayer, FeatureLayer, Expand, FeatureForm, esriConfig, QueryTask, Query, ScaleBar&lt;BR /&gt;) {&lt;/P&gt;&lt;P&gt;let editFeature, editGraphic, highlight, featureForm, editArea, attributeEditing, updateInstructionDiv;&lt;BR /&gt;esriConfig.portalUrl = "&lt;A href="https://portal.environment.gov.za/portal" target="_blank"&gt;https://portal.environment.gov.za/portal&lt;/A&gt;";&lt;BR /&gt;&lt;BR /&gt;const featureLayer = new FeatureLayer({&lt;BR /&gt;url: "&lt;A href="https://portal.environment.gov.za/server/rest/services/Boundary/Wards/MapServer/0" target="_blank"&gt;https://portal.environment.gov.za/server/rest/services/Boundary/Wards/MapServer/0&lt;/A&gt;",&lt;BR /&gt;&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;// GraphicsLayer to hold graphics created via sketch view model&lt;BR /&gt;const graphicsLayer = new GraphicsLayer({&lt;BR /&gt;id: "tempGraphics"&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;var webmap = new WebMap({&lt;BR /&gt;layers: [graphicsLayer],&lt;BR /&gt;portalItem: {&lt;BR /&gt;id: "04582be14885483da48f29398960f653"&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;var view = new MapView({&lt;BR /&gt;container: "viewDiv",&lt;BR /&gt;map: webmap&lt;BR /&gt;&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;const polygonSymbol = {&lt;BR /&gt;type: "simple-fill", // autocasts as new SimpleFillSymbol()&lt;BR /&gt;color: "rgba(138,43,226, 0.8)",&lt;BR /&gt;style: "solid",&lt;BR /&gt;outline: {&lt;BR /&gt;color: "white",&lt;BR /&gt;width: 1&lt;BR /&gt;}&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;view.when(function () {&lt;BR /&gt;// create a new sketch view model&lt;BR /&gt;const sketchViewModel = new SketchViewModel({&lt;BR /&gt;view,&lt;BR /&gt;layer: graphicsLayer,&lt;BR /&gt;polygonSymbol&lt;BR /&gt;});&lt;BR /&gt;&lt;BR /&gt;//&lt;/P&gt;&lt;P&gt;setUpClickHandler();&lt;BR /&gt;&lt;BR /&gt;// ***********************************************************&lt;BR /&gt;// Call FeatureLayer.applyEdits() with specified params.&lt;BR /&gt;// ***********************************************************&lt;BR /&gt;function applyEdits(params) {&lt;BR /&gt;featureLayer.applyEdits(params).then(function(editsResult) {&lt;BR /&gt;// Get the objectId of the newly added feature.&lt;BR /&gt;// Call selectFeature function to highlight the new feature.&lt;BR /&gt;if (editsResult.addFeatureResults.length &amp;gt; 0) {&lt;BR /&gt;const objectId = editsResult.addFeatureResults[0].objectId;&lt;BR /&gt;selectFeature(objectId);&lt;BR /&gt;}&lt;BR /&gt;})&lt;BR /&gt;.catch(function(error) {&lt;BR /&gt;console.log("===============================================");&lt;BR /&gt;console.error("[ applyEdits ] FAILURE: ", error.code, error.name,&lt;BR /&gt;error.message);&lt;BR /&gt;console.log("error = ", error);&lt;BR /&gt;});&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;// Listen to create-complete event to add a newly created graphic to view&lt;BR /&gt;sketchViewModel.on("create-complete", addGraphic);&lt;/P&gt;&lt;P&gt;// Listen the sketchViewModel's update-complete and update-cancel events&lt;BR /&gt;sketchViewModel.on("update-complete", updateGraphic);&lt;BR /&gt;sketchViewModel.on("update-cancel", updateGraphic);&lt;/P&gt;&lt;P&gt;// called when sketchViewModel's create-complete event is fired.&lt;BR /&gt;function addGraphic(event) {&lt;BR /&gt;// Create a new graphic and set its geometry to&lt;BR /&gt;// `create-complete` event geometry.&lt;BR /&gt;const graphic = new Graphic({&lt;BR /&gt;geometry: event.geometry,&lt;BR /&gt;symbol: sketchViewModel.graphic.symbol&lt;BR /&gt;&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;graphicsLayer.add(graphic);&lt;/P&gt;&lt;P&gt;const edits = { //Fire the addFeatures function using the completed graphic&lt;BR /&gt;addFeatures: [graphic]&lt;BR /&gt;};&lt;BR /&gt;applyEdits(edits);&lt;BR /&gt;&lt;BR /&gt;console.log(graphic);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;// Runs when sketchViewModel's update-complete or update-cancel&lt;BR /&gt;// events are fired.&lt;BR /&gt;function updateGraphic(event) {&lt;BR /&gt;// Create a new graphic and set its geometry event.geometry&lt;BR /&gt;var graphic = new Graphic({&lt;BR /&gt;geometry: event.geometry,&lt;BR /&gt;symbol: editGraphic.symbol&lt;BR /&gt;});&lt;BR /&gt;graphicsLayer.add(graphic);&lt;/P&gt;&lt;P&gt;// set the editGraphic to null update is complete or cancelled.&lt;BR /&gt;editGraphic = null;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;// set up logic to handle geometry update and reflect the update on "graphicsLayer"&lt;BR /&gt;function setUpClickHandler() {&lt;BR /&gt;view.on("click", function (event) {&lt;BR /&gt;view.hitTest(event).then(function (response) {&lt;BR /&gt;var results = response.results;&lt;BR /&gt;if (results.length &amp;gt; 0) {&lt;BR /&gt;for (var i = 0; i &amp;lt; results.length; i++) {&lt;BR /&gt;// Check if we're already editing a graphic&lt;BR /&gt;if (!editGraphic &amp;amp;&amp;amp; results[i].graphic.layer.id === "tempGraphics") {&lt;BR /&gt;// Save a reference to the graphic we intend to update&lt;BR /&gt;editGraphic = results[i].graphic;&lt;BR /&gt;&lt;BR /&gt;// Remove the graphic from the GraphicsLayer&lt;BR /&gt;// Sketch will handle displaying the graphic while being updated&lt;BR /&gt;graphicsLayer.remove(editGraphic);&lt;BR /&gt;sketchViewModel.update(editGraphic);&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;});&lt;BR /&gt;});&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// activate the sketch to create a polygon&lt;BR /&gt;var drawPolygonButton = document.getElementById("polygonButton");&lt;BR /&gt;drawPolygonButton.onclick = function () {&lt;BR /&gt;// set the sketch to create a polygon geometry&lt;BR /&gt;sketchViewModel.create("polygon");&lt;BR /&gt;setActiveButton(this);&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;// reset button&lt;BR /&gt;document.getElementById("resetBtn").onclick = function () {&lt;BR /&gt;sketchViewModel.reset();&lt;BR /&gt;graphicsLayer.removeAll();&lt;BR /&gt;setActiveButton();&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;function setActiveButton(selectedButton) {&lt;BR /&gt;// focus the view to activate keyboard shortcuts for sketching&lt;BR /&gt;view.focus();&lt;BR /&gt;var elements = document.getElementsByClassName("active");&lt;BR /&gt;for (var i = 0; i &amp;lt; elements.length; i++) {&lt;BR /&gt;elements[i].classList.remove("active");&lt;BR /&gt;}&lt;BR /&gt;if (selectedButton) {&lt;BR /&gt;selectedButton.classList.add("active");&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;});&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;&amp;lt;/script&amp;gt;&lt;BR /&gt;&amp;lt;/head&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;body&amp;gt;&lt;BR /&gt;&amp;lt;div id="viewDiv"&amp;gt;&lt;BR /&gt;&amp;lt;div id="topbar"&amp;gt;&lt;BR /&gt;&amp;lt;button class="action-button esri-icon-polygon" id="polygonButton" type="button"&lt;BR /&gt;title="Draw polygon"&amp;gt;&amp;lt;/button&amp;gt;&lt;BR /&gt;&amp;lt;button class="action-button esri-icon-trash" id="resetBtn" type="button"&lt;BR /&gt;title="Clear graphics"&amp;gt;&amp;lt;/button&amp;gt;&lt;BR /&gt;&amp;lt;/div&amp;gt;&lt;BR /&gt;&amp;lt;/div&amp;gt;&lt;BR /&gt;&amp;lt;/body&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/html&amp;gt;&lt;/P&gt;&lt;P&gt;On my previous code I can get this information but I can not draw multiple polygons on it. Please see code below:&lt;/P&gt;&lt;P&gt;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&lt;BR /&gt;&amp;lt;meta charset="utf-8"&amp;gt;&lt;BR /&gt;&amp;lt;meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no"&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;title&amp;gt;GIS Map for CRM&amp;lt;/title&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;link href="&lt;A href="https://js.arcgis.com/4.14/esri/themes/light/main.css" target="_blank"&gt;https://js.arcgis.com/4.14/esri/themes/light/main.css&lt;/A&gt;" rel="stylesheet"&amp;gt;&lt;BR /&gt;&amp;lt;script src="&lt;A href="https://js.arcgis.com/4.14/" target="_blank"&gt;https://js.arcgis.com/4.14/&lt;/A&gt;"&amp;gt;&amp;lt;/script&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;style&amp;gt;&lt;BR /&gt;html,&lt;BR /&gt;#viewDiv {&lt;BR /&gt;padding: 0;&lt;BR /&gt;margin: 0;&lt;BR /&gt;height: 100%;&lt;BR /&gt;width: 100%;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;.esri-sketch__section.esri-sketch__tool-section:last-of-type {&lt;BR /&gt;display: none;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;.esri-sketch__section.esri-sketch__tool-section:nth-child(2) {&lt;BR /&gt;border-right: none;&lt;BR /&gt;}&lt;BR /&gt;button[title="Reshape"]{&lt;BR /&gt;display: none;&lt;BR /&gt;}&lt;BR /&gt;button[title="Transform"]{&lt;BR /&gt;display: none;&lt;BR /&gt;}&lt;BR /&gt;&amp;lt;/style&amp;gt;&lt;BR /&gt;&amp;lt;script&amp;gt;&lt;BR /&gt;var lon;&lt;BR /&gt;var lat;&lt;BR /&gt;var crmLatitude;&lt;BR /&gt;var crmLongitude;&lt;BR /&gt;var latlon;&lt;BR /&gt;var provinces;&lt;BR /&gt;var municipalities;&lt;BR /&gt;var districts;&lt;BR /&gt;var wards;&lt;BR /&gt;var showWards = [];&lt;BR /&gt;var testVariable;&lt;BR /&gt;require([&lt;BR /&gt;"esri/Map",&lt;BR /&gt;"esri/views/MapView",&lt;BR /&gt;"esri/WebMap",&lt;BR /&gt;"esri/layers/FeatureLayer",&lt;BR /&gt;"esri/tasks/QueryTask",&lt;BR /&gt;"esri/tasks/support/Query",&lt;BR /&gt;"esri/config",&lt;BR /&gt;"esri/widgets/Sketch",&lt;BR /&gt;"esri/layers/GraphicsLayer",&lt;BR /&gt;"esri/widgets/ScaleBar"],&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;function(Map, MapView, WebMap, FeatureLayer, QueryTask, Query,&lt;BR /&gt;esriConfig, Sketch, GraphicsLayer, ScaleBar) {&lt;BR /&gt;esriConfig.portalUrl = "&lt;A href="https://portal.environment.gov.za/portal" target="_blank"&gt;https://portal.environment.gov.za/portal&lt;/A&gt;";&lt;/P&gt;&lt;P&gt;const featureLayerUrl = '&lt;A href="https://portal.environment.gov.za/server/rest/services/Boundary/Wards/MapServer/0" target="_blank"&gt;https://portal.environment.gov.za/server/rest/services/Boundary/Wards/MapServer/0&lt;/A&gt;';&lt;BR /&gt;var webmap = new WebMap({&lt;BR /&gt;portalItem: {&lt;BR /&gt;id: "04582be14885483da48f29398960f653"&lt;BR /&gt;}&lt;BR /&gt;});&lt;BR /&gt;&lt;BR /&gt;var graphicsLayer = new GraphicsLayer();&lt;/P&gt;&lt;P&gt;var view = new MapView({&lt;BR /&gt;map: webmap,&lt;BR /&gt;container: "viewDiv",&lt;BR /&gt;popup: null&lt;BR /&gt;});&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;var featureLayer = new FeatureLayer({&lt;BR /&gt;url: featureLayerUrl&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;webmap.add(featureLayer);&lt;/P&gt;&lt;P&gt;webmap.layers.add(graphicsLayer);&lt;BR /&gt;&lt;BR /&gt;var sketch = new Sketch({&lt;BR /&gt;layer: graphicsLayer,&lt;BR /&gt;view: view,&lt;BR /&gt;availableCreateTools: ["polygon"],&lt;BR /&gt;creationMode: "update",&lt;BR /&gt;&lt;BR /&gt;});&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;view.ui.add(sketch, {&lt;BR /&gt;position: "top-right"&lt;BR /&gt;});&lt;BR /&gt;&lt;BR /&gt;var scaleBar = new ScaleBar({&lt;BR /&gt;view: view&lt;BR /&gt;});&lt;BR /&gt;// Add widget to the bottom left corner of the view&lt;BR /&gt;view.ui.add(scaleBar, {&lt;BR /&gt;position: "bottom-left"&lt;BR /&gt;});&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;sketch.on('create', function (event) {&lt;BR /&gt;// check if the create event's state has changed to complete indicating&lt;BR /&gt;// the graphic create operation is completed.&lt;BR /&gt;if (event.state === "complete") {&lt;/P&gt;&lt;P&gt;if (view.zoom &amp;gt;= 11) {&lt;BR /&gt;let gra = event.graphic.clone();&lt;BR /&gt;event.graphic.layer.removeAll();&lt;BR /&gt;gra.symbol.color = "red";&lt;BR /&gt;gra.layer.add(gra);&lt;BR /&gt;console.log(view.zoom);&lt;BR /&gt;console.log("X = ", gra.geometry.x);&lt;BR /&gt;console.log("Y = ", gra.geometry.y);&lt;BR /&gt;console.log("Lat = ", event.graphic.geometry.latitude);&lt;BR /&gt;console.log("Long = ", event.graphic.geometry.longitude);&lt;BR /&gt;lat = event.graphic.geometry.latitude;&lt;BR /&gt;lon = event.graphic.geometry.longitude;&lt;BR /&gt;zoomLevel = view.zoom;&lt;BR /&gt;for (var i = 0; i &amp;lt; gra.geometry.rings.length; i++){&lt;BR /&gt;for (var p = 0; p &amp;lt; gra.geometry.rings[i].length; p++){&lt;BR /&gt;crmLatitude = String(gra.geometry.getPoint(i, p));&lt;BR /&gt;crmLongitude = String(gra.geometry.getPoint(i, p));&lt;BR /&gt;var LatLon = String(gra.geometry.rings[i][p]);&lt;BR /&gt;console.log(LatLon);&lt;BR /&gt;latlon = LatLon;&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;debugger;&lt;BR /&gt;}&lt;BR /&gt;else{&lt;BR /&gt;alert("please zoom in");&lt;BR /&gt;event.graphic.layer.remove(event.graphic);&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;});&lt;BR /&gt;&lt;BR /&gt;view.on('click', function(event){&lt;BR /&gt;var queryTask = new QueryTask({&lt;BR /&gt;url: featureLayerUrl&lt;BR /&gt;});&lt;BR /&gt;var query = new Query();&lt;BR /&gt;query.geometry = view.toMap(event);&lt;BR /&gt;query.distance = 0;&lt;BR /&gt;query.units = "meters";&lt;BR /&gt;query.spatialRelationship = "intersects";&lt;BR /&gt;query.returnGeometry = true;&lt;BR /&gt;query.outFields = [ "PROVINCE", "DCS12_NAME", "S12_NAME", "WARD_NO" ];&lt;/P&gt;&lt;P&gt;queryTask.execute(query).then(function(results){&lt;BR /&gt;&lt;BR /&gt;var feat = results.features[0];&lt;BR /&gt;provinces = feat.attributes.PROVINCE;&lt;BR /&gt;wards = feat.attributes.WARD_NO;&lt;BR /&gt;districts = feat.attributes.DCS12_NAME;&lt;BR /&gt;municipalities = feat.attributes.S12_NAME&lt;BR /&gt;&lt;BR /&gt;showWards.push(wards);&lt;BR /&gt;var xwards = showWards.toString();&lt;BR /&gt;&lt;BR /&gt;console.log(provinces);&lt;BR /&gt;console.log(wards);&lt;BR /&gt;console.log(districts);&lt;BR /&gt;console.log(municipalities);&lt;BR /&gt;&lt;BR /&gt;console.log(xwards);&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;//Call to CRM to populate the lookup field for Province&lt;BR /&gt;&lt;BR /&gt;debugger;&lt;BR /&gt;&lt;BR /&gt;window.parent.Xrm.WebApi.online.retrieveMultipleRecords("dea_province", "?$select=dea_name,dea_provinceid&amp;amp;$filter=dea_name eq '" + provinces + "'").then(&lt;BR /&gt;function success(results) {&lt;BR /&gt;debugger;&lt;BR /&gt;for (var i = 0; i &amp;lt; results.entities.length; i++) {&lt;BR /&gt;var dea_name = results.entities[i]["dea_name"];&lt;BR /&gt;var dea_provinceid = results.entities[i]["dea_provinceid"];&lt;BR /&gt;&lt;BR /&gt;//Populate lookup&lt;BR /&gt;var lookupValue = new Array();&lt;BR /&gt;lookupValue[0] = new Object();&lt;BR /&gt;lookupValue[0].id = dea_provinceid; // GUID of the lookup id&lt;BR /&gt;lookupValue[0].name = dea_name; // Name of the lookup&lt;BR /&gt;lookupValue[0].entityType = "dea_province"; //Entity Type of the lookup entity&lt;BR /&gt;window.parent.Xrm.Page.getAttribute("dea_province").setValue(lookupValue);&lt;BR /&gt;}&lt;BR /&gt;},&lt;BR /&gt;function(error) {&lt;BR /&gt;Xrm.Utility.alertDialog(error.message);&lt;BR /&gt;}&lt;BR /&gt;);&lt;BR /&gt;&lt;BR /&gt;//Call to CRM to populate the lookup field for the Local Municipality&lt;BR /&gt;&lt;BR /&gt;window.parent.Xrm.WebApi.online.retrieveMultipleRecords("dea_localmunicipality", "?$select=dea_localmunicipalityid,dea_name&amp;amp;$filter=dea_name eq '" + municipalities + "'").then(&lt;BR /&gt;function success(results) {&lt;BR /&gt;for (var i = 0; i &amp;lt; results.entities.length; i++) {&lt;BR /&gt;var dea_localmunicipalityid = results.entities[i]["dea_localmunicipalityid"];&lt;BR /&gt;var dea_name = results.entities[i]["dea_name"];&lt;BR /&gt;&lt;BR /&gt;//Populate lookup&lt;BR /&gt;var lookupValue = new Array();&lt;BR /&gt;lookupValue[0] = new Object();&lt;BR /&gt;lookupValue[0].id = dea_localmunicipalityid; // GUID of the lookup id&lt;BR /&gt;lookupValue[0].name = dea_name; // Name of the lookup&lt;BR /&gt;lookupValue[0].entityType = "dea_localmunicipality"; //Entity Type of the lookup entity&lt;BR /&gt;window.parent.Xrm.Page.getAttribute("dea_localmunicipality").setValue(lookupValue);&lt;BR /&gt;}&lt;BR /&gt;},&lt;BR /&gt;function(error) {&lt;BR /&gt;Xrm.Utility.alertDialog(error.message);&lt;BR /&gt;}&lt;BR /&gt;);&lt;BR /&gt;&lt;BR /&gt;//Call to CRM to populate the lookup field for District Municipality&lt;/P&gt;&lt;P&gt;window.parent.Xrm.WebApi.online.retrieveMultipleRecords("dea_districtmunicipality", "?$select=dea_districtmunicipalityid,dea_name&amp;amp;$filter=dea_name eq '" + districts + "'").then(&lt;BR /&gt;function success(results) {&lt;BR /&gt;for (var i = 0; i &amp;lt; results.entities.length; i++) {&lt;BR /&gt;var dea_districtmunicipalityid = results.entities[i]["dea_districtmunicipalityid"];&lt;BR /&gt;var dea_name = results.entities[i]["dea_name"];&lt;BR /&gt;&lt;BR /&gt;//Populate lookup&lt;BR /&gt;var lookupValue = new Array();&lt;BR /&gt;lookupValue[0] = new Object();&lt;BR /&gt;lookupValue[0].id = dea_districtmunicipalityid; // GUID of the lookup id&lt;BR /&gt;lookupValue[0].name = dea_name; // Name of the lookup&lt;BR /&gt;lookupValue[0].entityType = "dea_districtmunicipality"; //Entity Type of the lookup entity&lt;BR /&gt;window.parent.Xrm.Page.getAttribute("dea_districtmunicipality").setValue(lookupValue);&lt;BR /&gt;}&lt;BR /&gt;},&lt;BR /&gt;function(error) {&lt;BR /&gt;Xrm.Utility.alertDialog(error.message);&lt;BR /&gt;}&lt;BR /&gt;);&lt;BR /&gt;&lt;BR /&gt;//Populate the coordinates field&lt;BR /&gt;debugger;&lt;BR /&gt;window.parent.Xrm.Page.getAttribute("dea_latitude").setValue(latlon);&lt;BR /&gt;window.parent.Xrm.Page.getAttribute("dea_longitude").setValue(latlon);&lt;BR /&gt;window.parent.Xrm.Page.getAttribute("dea_ward").setValue(xwards);&lt;BR /&gt;//THE END OF CALLS TO CRM&lt;BR /&gt;})&lt;BR /&gt;.catch(function (error) {&lt;BR /&gt;console.error("Query Error: " + error);&lt;BR /&gt;alert("The polygon has been drawn outside the South African borders, please refresh and re-draw inside the South African borders");&lt;BR /&gt;});&lt;BR /&gt;&lt;BR /&gt;});&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;lt;/script&amp;gt;&lt;BR /&gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;/head&amp;gt;&lt;BR /&gt;&amp;lt;/head&amp;gt;&lt;BR /&gt;&amp;lt;body style="overflow-wrap: break-word;"&amp;gt;&lt;BR /&gt;&amp;lt;div id="viewDiv"&amp;gt;&amp;lt;/div&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/P&gt;&lt;P&gt;Please assist.&lt;/P&gt;&lt;P&gt;Kind Regards&lt;/P&gt;&lt;P&gt;Siyabonga Kubeka&lt;/P&gt;</description>
    <pubDate>Tue, 01 Jun 2021 09:23:32 GMT</pubDate>
    <dc:creator>SiyabongaKubeka</dc:creator>
    <dc:date>2021-06-01T09:23:32Z</dc:date>
    <item>
      <title>How do get longitude and latitude for each vertex of each polygon in JavaScript?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-do-get-longitude-and-latitude-for-each-vertex/m-p/1063470#M73350</link>
      <description>&lt;P&gt;Hi Everyone&lt;/P&gt;&lt;P&gt;I need you assistance or advice, I have a webmap and I can draw multiple polygons on it. I want to be able to get the coordinates of each vertex (corner or ring) of each polygon.&amp;nbsp; Below is the javascript code that is currently running.&lt;/P&gt;&lt;P&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;BR /&gt;&amp;lt;html&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;head&amp;gt;&lt;BR /&gt;&amp;lt;meta charset="utf-8"&amp;gt;&lt;BR /&gt;&amp;lt;meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no"&amp;gt;&lt;BR /&gt;&amp;lt;title&amp;gt;Sketch temporary geometries - 4.9&amp;lt;/title&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;link rel="stylesheet" href="&lt;A href="https://js.arcgis.com/4.9/esri/css/main.css" target="_blank"&gt;https://js.arcgis.com/4.9/esri/css/main.css&lt;/A&gt;"&amp;gt;&lt;BR /&gt;&amp;lt;script src="&lt;A href="https://js.arcgis.com/4.9/" target="_blank"&gt;https://js.arcgis.com/4.9/&lt;/A&gt;"&amp;gt;&amp;lt;/script&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;style&amp;gt;&lt;BR /&gt;html,&lt;BR /&gt;body,&lt;BR /&gt;#viewDiv {&lt;BR /&gt;padding: 0;&lt;BR /&gt;margin: 0;&lt;BR /&gt;height: 100%;&lt;BR /&gt;width: 100%;&lt;BR /&gt;font-family: verdana;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;#topbar {&lt;BR /&gt;background: #fff;&lt;BR /&gt;position: absolute;&lt;BR /&gt;top: 15px;&lt;BR /&gt;right: 15px;&lt;BR /&gt;padding: 10px;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;.action-button {&lt;BR /&gt;font-size: 16px;&lt;BR /&gt;background-color: transparent;&lt;BR /&gt;border: 1px solid #D3D3D3;&lt;BR /&gt;color: #6e6e6e;&lt;BR /&gt;height: 32px;&lt;BR /&gt;width: 32px;&lt;BR /&gt;text-align: center;&lt;BR /&gt;box-shadow: 0 0 1px rgba(0, 0, 0, 0.3);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;.action-button:hover,&lt;BR /&gt;.action-button:focus {&lt;BR /&gt;background: #0079c1;&lt;BR /&gt;color: #e4e4e4;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;.active {&lt;BR /&gt;background: #0079c1;&lt;BR /&gt;color: #e4e4e4;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;lt;/style&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;script&amp;gt;&lt;BR /&gt;var lon;&lt;BR /&gt;var lat;&lt;BR /&gt;var crmLatitude;&lt;BR /&gt;var crmLongitude;&lt;BR /&gt;var latlon;&lt;BR /&gt;var provinces;&lt;BR /&gt;var municipalities;&lt;BR /&gt;var districts;&lt;BR /&gt;var wards;&lt;BR /&gt;var showWards = [];&lt;BR /&gt;var testVariable;&lt;BR /&gt;require([&lt;BR /&gt;"esri/Map",&lt;BR /&gt;"esri/views/MapView",&lt;BR /&gt;"esri/WebMap",&lt;BR /&gt;"esri/widgets/Sketch/SketchViewModel",&lt;BR /&gt;"esri/Graphic",&lt;BR /&gt;"esri/layers/GraphicsLayer",&lt;BR /&gt;"esri/layers/FeatureLayer",&lt;BR /&gt;"esri/widgets/Expand",&lt;BR /&gt;"esri/widgets/FeatureForm",&lt;BR /&gt;"esri/config",&lt;BR /&gt;"esri/tasks/QueryTask",&lt;BR /&gt;"esri/tasks/support/Query",&lt;BR /&gt;"esri/widgets/ScaleBar"&lt;BR /&gt;], function (&lt;BR /&gt;Map, MapView, WebMap, SketchViewModel, Graphic, GraphicsLayer, FeatureLayer, Expand, FeatureForm, esriConfig, QueryTask, Query, ScaleBar&lt;BR /&gt;) {&lt;/P&gt;&lt;P&gt;let editFeature, editGraphic, highlight, featureForm, editArea, attributeEditing, updateInstructionDiv;&lt;BR /&gt;esriConfig.portalUrl = "&lt;A href="https://portal.environment.gov.za/portal" target="_blank"&gt;https://portal.environment.gov.za/portal&lt;/A&gt;";&lt;BR /&gt;&lt;BR /&gt;const featureLayer = new FeatureLayer({&lt;BR /&gt;url: "&lt;A href="https://portal.environment.gov.za/server/rest/services/Boundary/Wards/MapServer/0" target="_blank"&gt;https://portal.environment.gov.za/server/rest/services/Boundary/Wards/MapServer/0&lt;/A&gt;",&lt;BR /&gt;&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;// GraphicsLayer to hold graphics created via sketch view model&lt;BR /&gt;const graphicsLayer = new GraphicsLayer({&lt;BR /&gt;id: "tempGraphics"&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;var webmap = new WebMap({&lt;BR /&gt;layers: [graphicsLayer],&lt;BR /&gt;portalItem: {&lt;BR /&gt;id: "04582be14885483da48f29398960f653"&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;var view = new MapView({&lt;BR /&gt;container: "viewDiv",&lt;BR /&gt;map: webmap&lt;BR /&gt;&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;const polygonSymbol = {&lt;BR /&gt;type: "simple-fill", // autocasts as new SimpleFillSymbol()&lt;BR /&gt;color: "rgba(138,43,226, 0.8)",&lt;BR /&gt;style: "solid",&lt;BR /&gt;outline: {&lt;BR /&gt;color: "white",&lt;BR /&gt;width: 1&lt;BR /&gt;}&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;view.when(function () {&lt;BR /&gt;// create a new sketch view model&lt;BR /&gt;const sketchViewModel = new SketchViewModel({&lt;BR /&gt;view,&lt;BR /&gt;layer: graphicsLayer,&lt;BR /&gt;polygonSymbol&lt;BR /&gt;});&lt;BR /&gt;&lt;BR /&gt;//&lt;/P&gt;&lt;P&gt;setUpClickHandler();&lt;BR /&gt;&lt;BR /&gt;// ***********************************************************&lt;BR /&gt;// Call FeatureLayer.applyEdits() with specified params.&lt;BR /&gt;// ***********************************************************&lt;BR /&gt;function applyEdits(params) {&lt;BR /&gt;featureLayer.applyEdits(params).then(function(editsResult) {&lt;BR /&gt;// Get the objectId of the newly added feature.&lt;BR /&gt;// Call selectFeature function to highlight the new feature.&lt;BR /&gt;if (editsResult.addFeatureResults.length &amp;gt; 0) {&lt;BR /&gt;const objectId = editsResult.addFeatureResults[0].objectId;&lt;BR /&gt;selectFeature(objectId);&lt;BR /&gt;}&lt;BR /&gt;})&lt;BR /&gt;.catch(function(error) {&lt;BR /&gt;console.log("===============================================");&lt;BR /&gt;console.error("[ applyEdits ] FAILURE: ", error.code, error.name,&lt;BR /&gt;error.message);&lt;BR /&gt;console.log("error = ", error);&lt;BR /&gt;});&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;// Listen to create-complete event to add a newly created graphic to view&lt;BR /&gt;sketchViewModel.on("create-complete", addGraphic);&lt;/P&gt;&lt;P&gt;// Listen the sketchViewModel's update-complete and update-cancel events&lt;BR /&gt;sketchViewModel.on("update-complete", updateGraphic);&lt;BR /&gt;sketchViewModel.on("update-cancel", updateGraphic);&lt;/P&gt;&lt;P&gt;// called when sketchViewModel's create-complete event is fired.&lt;BR /&gt;function addGraphic(event) {&lt;BR /&gt;// Create a new graphic and set its geometry to&lt;BR /&gt;// `create-complete` event geometry.&lt;BR /&gt;const graphic = new Graphic({&lt;BR /&gt;geometry: event.geometry,&lt;BR /&gt;symbol: sketchViewModel.graphic.symbol&lt;BR /&gt;&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;graphicsLayer.add(graphic);&lt;/P&gt;&lt;P&gt;const edits = { //Fire the addFeatures function using the completed graphic&lt;BR /&gt;addFeatures: [graphic]&lt;BR /&gt;};&lt;BR /&gt;applyEdits(edits);&lt;BR /&gt;&lt;BR /&gt;console.log(graphic);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;// Runs when sketchViewModel's update-complete or update-cancel&lt;BR /&gt;// events are fired.&lt;BR /&gt;function updateGraphic(event) {&lt;BR /&gt;// Create a new graphic and set its geometry event.geometry&lt;BR /&gt;var graphic = new Graphic({&lt;BR /&gt;geometry: event.geometry,&lt;BR /&gt;symbol: editGraphic.symbol&lt;BR /&gt;});&lt;BR /&gt;graphicsLayer.add(graphic);&lt;/P&gt;&lt;P&gt;// set the editGraphic to null update is complete or cancelled.&lt;BR /&gt;editGraphic = null;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;// set up logic to handle geometry update and reflect the update on "graphicsLayer"&lt;BR /&gt;function setUpClickHandler() {&lt;BR /&gt;view.on("click", function (event) {&lt;BR /&gt;view.hitTest(event).then(function (response) {&lt;BR /&gt;var results = response.results;&lt;BR /&gt;if (results.length &amp;gt; 0) {&lt;BR /&gt;for (var i = 0; i &amp;lt; results.length; i++) {&lt;BR /&gt;// Check if we're already editing a graphic&lt;BR /&gt;if (!editGraphic &amp;amp;&amp;amp; results[i].graphic.layer.id === "tempGraphics") {&lt;BR /&gt;// Save a reference to the graphic we intend to update&lt;BR /&gt;editGraphic = results[i].graphic;&lt;BR /&gt;&lt;BR /&gt;// Remove the graphic from the GraphicsLayer&lt;BR /&gt;// Sketch will handle displaying the graphic while being updated&lt;BR /&gt;graphicsLayer.remove(editGraphic);&lt;BR /&gt;sketchViewModel.update(editGraphic);&lt;BR /&gt;break;&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;});&lt;BR /&gt;});&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;// activate the sketch to create a polygon&lt;BR /&gt;var drawPolygonButton = document.getElementById("polygonButton");&lt;BR /&gt;drawPolygonButton.onclick = function () {&lt;BR /&gt;// set the sketch to create a polygon geometry&lt;BR /&gt;sketchViewModel.create("polygon");&lt;BR /&gt;setActiveButton(this);&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;// reset button&lt;BR /&gt;document.getElementById("resetBtn").onclick = function () {&lt;BR /&gt;sketchViewModel.reset();&lt;BR /&gt;graphicsLayer.removeAll();&lt;BR /&gt;setActiveButton();&lt;BR /&gt;};&lt;/P&gt;&lt;P&gt;function setActiveButton(selectedButton) {&lt;BR /&gt;// focus the view to activate keyboard shortcuts for sketching&lt;BR /&gt;view.focus();&lt;BR /&gt;var elements = document.getElementsByClassName("active");&lt;BR /&gt;for (var i = 0; i &amp;lt; elements.length; i++) {&lt;BR /&gt;elements[i].classList.remove("active");&lt;BR /&gt;}&lt;BR /&gt;if (selectedButton) {&lt;BR /&gt;selectedButton.classList.add("active");&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;});&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;&amp;lt;/script&amp;gt;&lt;BR /&gt;&amp;lt;/head&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;body&amp;gt;&lt;BR /&gt;&amp;lt;div id="viewDiv"&amp;gt;&lt;BR /&gt;&amp;lt;div id="topbar"&amp;gt;&lt;BR /&gt;&amp;lt;button class="action-button esri-icon-polygon" id="polygonButton" type="button"&lt;BR /&gt;title="Draw polygon"&amp;gt;&amp;lt;/button&amp;gt;&lt;BR /&gt;&amp;lt;button class="action-button esri-icon-trash" id="resetBtn" type="button"&lt;BR /&gt;title="Clear graphics"&amp;gt;&amp;lt;/button&amp;gt;&lt;BR /&gt;&amp;lt;/div&amp;gt;&lt;BR /&gt;&amp;lt;/div&amp;gt;&lt;BR /&gt;&amp;lt;/body&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/html&amp;gt;&lt;/P&gt;&lt;P&gt;On my previous code I can get this information but I can not draw multiple polygons on it. Please see code below:&lt;/P&gt;&lt;P&gt;&amp;lt;html&amp;gt;&amp;lt;head&amp;gt;&lt;BR /&gt;&amp;lt;meta charset="utf-8"&amp;gt;&lt;BR /&gt;&amp;lt;meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no"&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;title&amp;gt;GIS Map for CRM&amp;lt;/title&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;link href="&lt;A href="https://js.arcgis.com/4.14/esri/themes/light/main.css" target="_blank"&gt;https://js.arcgis.com/4.14/esri/themes/light/main.css&lt;/A&gt;" rel="stylesheet"&amp;gt;&lt;BR /&gt;&amp;lt;script src="&lt;A href="https://js.arcgis.com/4.14/" target="_blank"&gt;https://js.arcgis.com/4.14/&lt;/A&gt;"&amp;gt;&amp;lt;/script&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;style&amp;gt;&lt;BR /&gt;html,&lt;BR /&gt;#viewDiv {&lt;BR /&gt;padding: 0;&lt;BR /&gt;margin: 0;&lt;BR /&gt;height: 100%;&lt;BR /&gt;width: 100%;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;.esri-sketch__section.esri-sketch__tool-section:last-of-type {&lt;BR /&gt;display: none;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;.esri-sketch__section.esri-sketch__tool-section:nth-child(2) {&lt;BR /&gt;border-right: none;&lt;BR /&gt;}&lt;BR /&gt;button[title="Reshape"]{&lt;BR /&gt;display: none;&lt;BR /&gt;}&lt;BR /&gt;button[title="Transform"]{&lt;BR /&gt;display: none;&lt;BR /&gt;}&lt;BR /&gt;&amp;lt;/style&amp;gt;&lt;BR /&gt;&amp;lt;script&amp;gt;&lt;BR /&gt;var lon;&lt;BR /&gt;var lat;&lt;BR /&gt;var crmLatitude;&lt;BR /&gt;var crmLongitude;&lt;BR /&gt;var latlon;&lt;BR /&gt;var provinces;&lt;BR /&gt;var municipalities;&lt;BR /&gt;var districts;&lt;BR /&gt;var wards;&lt;BR /&gt;var showWards = [];&lt;BR /&gt;var testVariable;&lt;BR /&gt;require([&lt;BR /&gt;"esri/Map",&lt;BR /&gt;"esri/views/MapView",&lt;BR /&gt;"esri/WebMap",&lt;BR /&gt;"esri/layers/FeatureLayer",&lt;BR /&gt;"esri/tasks/QueryTask",&lt;BR /&gt;"esri/tasks/support/Query",&lt;BR /&gt;"esri/config",&lt;BR /&gt;"esri/widgets/Sketch",&lt;BR /&gt;"esri/layers/GraphicsLayer",&lt;BR /&gt;"esri/widgets/ScaleBar"],&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;function(Map, MapView, WebMap, FeatureLayer, QueryTask, Query,&lt;BR /&gt;esriConfig, Sketch, GraphicsLayer, ScaleBar) {&lt;BR /&gt;esriConfig.portalUrl = "&lt;A href="https://portal.environment.gov.za/portal" target="_blank"&gt;https://portal.environment.gov.za/portal&lt;/A&gt;";&lt;/P&gt;&lt;P&gt;const featureLayerUrl = '&lt;A href="https://portal.environment.gov.za/server/rest/services/Boundary/Wards/MapServer/0" target="_blank"&gt;https://portal.environment.gov.za/server/rest/services/Boundary/Wards/MapServer/0&lt;/A&gt;';&lt;BR /&gt;var webmap = new WebMap({&lt;BR /&gt;portalItem: {&lt;BR /&gt;id: "04582be14885483da48f29398960f653"&lt;BR /&gt;}&lt;BR /&gt;});&lt;BR /&gt;&lt;BR /&gt;var graphicsLayer = new GraphicsLayer();&lt;/P&gt;&lt;P&gt;var view = new MapView({&lt;BR /&gt;map: webmap,&lt;BR /&gt;container: "viewDiv",&lt;BR /&gt;popup: null&lt;BR /&gt;});&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;var featureLayer = new FeatureLayer({&lt;BR /&gt;url: featureLayerUrl&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;webmap.add(featureLayer);&lt;/P&gt;&lt;P&gt;webmap.layers.add(graphicsLayer);&lt;BR /&gt;&lt;BR /&gt;var sketch = new Sketch({&lt;BR /&gt;layer: graphicsLayer,&lt;BR /&gt;view: view,&lt;BR /&gt;availableCreateTools: ["polygon"],&lt;BR /&gt;creationMode: "update",&lt;BR /&gt;&lt;BR /&gt;});&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;view.ui.add(sketch, {&lt;BR /&gt;position: "top-right"&lt;BR /&gt;});&lt;BR /&gt;&lt;BR /&gt;var scaleBar = new ScaleBar({&lt;BR /&gt;view: view&lt;BR /&gt;});&lt;BR /&gt;// Add widget to the bottom left corner of the view&lt;BR /&gt;view.ui.add(scaleBar, {&lt;BR /&gt;position: "bottom-left"&lt;BR /&gt;});&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;sketch.on('create', function (event) {&lt;BR /&gt;// check if the create event's state has changed to complete indicating&lt;BR /&gt;// the graphic create operation is completed.&lt;BR /&gt;if (event.state === "complete") {&lt;/P&gt;&lt;P&gt;if (view.zoom &amp;gt;= 11) {&lt;BR /&gt;let gra = event.graphic.clone();&lt;BR /&gt;event.graphic.layer.removeAll();&lt;BR /&gt;gra.symbol.color = "red";&lt;BR /&gt;gra.layer.add(gra);&lt;BR /&gt;console.log(view.zoom);&lt;BR /&gt;console.log("X = ", gra.geometry.x);&lt;BR /&gt;console.log("Y = ", gra.geometry.y);&lt;BR /&gt;console.log("Lat = ", event.graphic.geometry.latitude);&lt;BR /&gt;console.log("Long = ", event.graphic.geometry.longitude);&lt;BR /&gt;lat = event.graphic.geometry.latitude;&lt;BR /&gt;lon = event.graphic.geometry.longitude;&lt;BR /&gt;zoomLevel = view.zoom;&lt;BR /&gt;for (var i = 0; i &amp;lt; gra.geometry.rings.length; i++){&lt;BR /&gt;for (var p = 0; p &amp;lt; gra.geometry.rings[i].length; p++){&lt;BR /&gt;crmLatitude = String(gra.geometry.getPoint(i, p));&lt;BR /&gt;crmLongitude = String(gra.geometry.getPoint(i, p));&lt;BR /&gt;var LatLon = String(gra.geometry.rings[i][p]);&lt;BR /&gt;console.log(LatLon);&lt;BR /&gt;latlon = LatLon;&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;debugger;&lt;BR /&gt;}&lt;BR /&gt;else{&lt;BR /&gt;alert("please zoom in");&lt;BR /&gt;event.graphic.layer.remove(event.graphic);&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;});&lt;BR /&gt;&lt;BR /&gt;view.on('click', function(event){&lt;BR /&gt;var queryTask = new QueryTask({&lt;BR /&gt;url: featureLayerUrl&lt;BR /&gt;});&lt;BR /&gt;var query = new Query();&lt;BR /&gt;query.geometry = view.toMap(event);&lt;BR /&gt;query.distance = 0;&lt;BR /&gt;query.units = "meters";&lt;BR /&gt;query.spatialRelationship = "intersects";&lt;BR /&gt;query.returnGeometry = true;&lt;BR /&gt;query.outFields = [ "PROVINCE", "DCS12_NAME", "S12_NAME", "WARD_NO" ];&lt;/P&gt;&lt;P&gt;queryTask.execute(query).then(function(results){&lt;BR /&gt;&lt;BR /&gt;var feat = results.features[0];&lt;BR /&gt;provinces = feat.attributes.PROVINCE;&lt;BR /&gt;wards = feat.attributes.WARD_NO;&lt;BR /&gt;districts = feat.attributes.DCS12_NAME;&lt;BR /&gt;municipalities = feat.attributes.S12_NAME&lt;BR /&gt;&lt;BR /&gt;showWards.push(wards);&lt;BR /&gt;var xwards = showWards.toString();&lt;BR /&gt;&lt;BR /&gt;console.log(provinces);&lt;BR /&gt;console.log(wards);&lt;BR /&gt;console.log(districts);&lt;BR /&gt;console.log(municipalities);&lt;BR /&gt;&lt;BR /&gt;console.log(xwards);&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;//Call to CRM to populate the lookup field for Province&lt;BR /&gt;&lt;BR /&gt;debugger;&lt;BR /&gt;&lt;BR /&gt;window.parent.Xrm.WebApi.online.retrieveMultipleRecords("dea_province", "?$select=dea_name,dea_provinceid&amp;amp;$filter=dea_name eq '" + provinces + "'").then(&lt;BR /&gt;function success(results) {&lt;BR /&gt;debugger;&lt;BR /&gt;for (var i = 0; i &amp;lt; results.entities.length; i++) {&lt;BR /&gt;var dea_name = results.entities[i]["dea_name"];&lt;BR /&gt;var dea_provinceid = results.entities[i]["dea_provinceid"];&lt;BR /&gt;&lt;BR /&gt;//Populate lookup&lt;BR /&gt;var lookupValue = new Array();&lt;BR /&gt;lookupValue[0] = new Object();&lt;BR /&gt;lookupValue[0].id = dea_provinceid; // GUID of the lookup id&lt;BR /&gt;lookupValue[0].name = dea_name; // Name of the lookup&lt;BR /&gt;lookupValue[0].entityType = "dea_province"; //Entity Type of the lookup entity&lt;BR /&gt;window.parent.Xrm.Page.getAttribute("dea_province").setValue(lookupValue);&lt;BR /&gt;}&lt;BR /&gt;},&lt;BR /&gt;function(error) {&lt;BR /&gt;Xrm.Utility.alertDialog(error.message);&lt;BR /&gt;}&lt;BR /&gt;);&lt;BR /&gt;&lt;BR /&gt;//Call to CRM to populate the lookup field for the Local Municipality&lt;BR /&gt;&lt;BR /&gt;window.parent.Xrm.WebApi.online.retrieveMultipleRecords("dea_localmunicipality", "?$select=dea_localmunicipalityid,dea_name&amp;amp;$filter=dea_name eq '" + municipalities + "'").then(&lt;BR /&gt;function success(results) {&lt;BR /&gt;for (var i = 0; i &amp;lt; results.entities.length; i++) {&lt;BR /&gt;var dea_localmunicipalityid = results.entities[i]["dea_localmunicipalityid"];&lt;BR /&gt;var dea_name = results.entities[i]["dea_name"];&lt;BR /&gt;&lt;BR /&gt;//Populate lookup&lt;BR /&gt;var lookupValue = new Array();&lt;BR /&gt;lookupValue[0] = new Object();&lt;BR /&gt;lookupValue[0].id = dea_localmunicipalityid; // GUID of the lookup id&lt;BR /&gt;lookupValue[0].name = dea_name; // Name of the lookup&lt;BR /&gt;lookupValue[0].entityType = "dea_localmunicipality"; //Entity Type of the lookup entity&lt;BR /&gt;window.parent.Xrm.Page.getAttribute("dea_localmunicipality").setValue(lookupValue);&lt;BR /&gt;}&lt;BR /&gt;},&lt;BR /&gt;function(error) {&lt;BR /&gt;Xrm.Utility.alertDialog(error.message);&lt;BR /&gt;}&lt;BR /&gt;);&lt;BR /&gt;&lt;BR /&gt;//Call to CRM to populate the lookup field for District Municipality&lt;/P&gt;&lt;P&gt;window.parent.Xrm.WebApi.online.retrieveMultipleRecords("dea_districtmunicipality", "?$select=dea_districtmunicipalityid,dea_name&amp;amp;$filter=dea_name eq '" + districts + "'").then(&lt;BR /&gt;function success(results) {&lt;BR /&gt;for (var i = 0; i &amp;lt; results.entities.length; i++) {&lt;BR /&gt;var dea_districtmunicipalityid = results.entities[i]["dea_districtmunicipalityid"];&lt;BR /&gt;var dea_name = results.entities[i]["dea_name"];&lt;BR /&gt;&lt;BR /&gt;//Populate lookup&lt;BR /&gt;var lookupValue = new Array();&lt;BR /&gt;lookupValue[0] = new Object();&lt;BR /&gt;lookupValue[0].id = dea_districtmunicipalityid; // GUID of the lookup id&lt;BR /&gt;lookupValue[0].name = dea_name; // Name of the lookup&lt;BR /&gt;lookupValue[0].entityType = "dea_districtmunicipality"; //Entity Type of the lookup entity&lt;BR /&gt;window.parent.Xrm.Page.getAttribute("dea_districtmunicipality").setValue(lookupValue);&lt;BR /&gt;}&lt;BR /&gt;},&lt;BR /&gt;function(error) {&lt;BR /&gt;Xrm.Utility.alertDialog(error.message);&lt;BR /&gt;}&lt;BR /&gt;);&lt;BR /&gt;&lt;BR /&gt;//Populate the coordinates field&lt;BR /&gt;debugger;&lt;BR /&gt;window.parent.Xrm.Page.getAttribute("dea_latitude").setValue(latlon);&lt;BR /&gt;window.parent.Xrm.Page.getAttribute("dea_longitude").setValue(latlon);&lt;BR /&gt;window.parent.Xrm.Page.getAttribute("dea_ward").setValue(xwards);&lt;BR /&gt;//THE END OF CALLS TO CRM&lt;BR /&gt;})&lt;BR /&gt;.catch(function (error) {&lt;BR /&gt;console.error("Query Error: " + error);&lt;BR /&gt;alert("The polygon has been drawn outside the South African borders, please refresh and re-draw inside the South African borders");&lt;BR /&gt;});&lt;BR /&gt;&lt;BR /&gt;});&lt;BR /&gt;});&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&amp;lt;/script&amp;gt;&lt;BR /&gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;meta&amp;gt;&amp;lt;/head&amp;gt;&lt;BR /&gt;&amp;lt;/head&amp;gt;&lt;BR /&gt;&amp;lt;body style="overflow-wrap: break-word;"&amp;gt;&lt;BR /&gt;&amp;lt;div id="viewDiv"&amp;gt;&amp;lt;/div&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;/P&gt;&lt;P&gt;Please assist.&lt;/P&gt;&lt;P&gt;Kind Regards&lt;/P&gt;&lt;P&gt;Siyabonga Kubeka&lt;/P&gt;</description>
      <pubDate>Tue, 01 Jun 2021 09:23:32 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-do-get-longitude-and-latitude-for-each-vertex/m-p/1063470#M73350</guid>
      <dc:creator>SiyabongaKubeka</dc:creator>
      <dc:date>2021-06-01T09:23:32Z</dc:date>
    </item>
    <item>
      <title>Re: How do get longitude and latitude for each vertex of each polygon in JavaScript?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-do-get-longitude-and-latitude-for-each-vertex/m-p/1063572#M73353</link>
      <description>&lt;P&gt;Try &lt;A href="https://developers.arcgis.com/javascript/latest/api-reference/esri-geometry-Geometry.html#toJSON" target="_self"&gt;Geometry toJSON()&lt;/A&gt;&lt;/P&gt;&lt;P&gt;For a regular 2D polygon, you'll get something like this&lt;/P&gt;&lt;LI-CODE lang="javascript"&gt;{
  "rings" : [[[-97.06138,32.837],[-97.06133,32.836],[-97.06124,32.834],[-97.06127,32.832],
              [-97.06138,32.837]],[[-97.06326,32.759],[-97.06298,32.755],[-97.06153,32.749],
              [-97.06326,32.759]]],
  "spatialReference" : {"wkid" : 4326}
}&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 01 Jun 2021 14:01:10 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-do-get-longitude-and-latitude-for-each-vertex/m-p/1063572#M73353</guid>
      <dc:creator>BlakeTerhune</dc:creator>
      <dc:date>2021-06-01T14:01:10Z</dc:date>
    </item>
    <item>
      <title>Re: How do get longitude and latitude for each vertex of each polygon in JavaScript?</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-do-get-longitude-and-latitude-for-each-vertex/m-p/1064336#M73372</link>
      <description>&lt;P&gt;Hi All&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I came right, I hat to remove this line :&amp;nbsp;&lt;SPAN&gt;event.graphic.layer.removeAll();&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 02 Jun 2021 20:23:41 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/how-do-get-longitude-and-latitude-for-each-vertex/m-p/1064336#M73372</guid>
      <dc:creator>SiyabongaKubeka</dc:creator>
      <dc:date>2021-06-02T20:23:41Z</dc:date>
    </item>
  </channel>
</rss>

