You are using a browser that is no longer supported. Please use the latest version of Google Chrome, Mozilla Firefox, Apple Safari, or Microsoft Edge. For more information please see the System Requirements.
Skip To ContentArcGIS for DevelopersSign In Dashboard

Note: Support for 3D on mobile devices may vary, view the system requirements for more information.

This sample shows how to highlight features in a CSVLayer on the client side. Graphics that intersect a polygon drawn on the view using the SketchViewModel are highlighted and the view zooms to the selection. It also displays the attributes of selected graphics in an OnDemandGrid. Users then can click on a row in the OnDemandGrid and the corresponding hurricane feature will be selected on the view.

sketchViewModel.on("create-complete", function(event) {
  // query features that intersect this polygon

function selectFeatures(geometry) {;
  if (csvLayerView) {
    // create a query and set its geometry parameter to the
    // polygon that was drawn on the view
    var query = {
      geometry: geometry,
      outFields: ["*"]

    // query graphics from the csv layer view. Geometry set for the query
    // can be polygon for point features and only intersecting geometries are returned
      .then(function(graphics) {
        // remove existing highlighted features
        if (highlight) {

        // highlight query results
        highlight = csvLayerView.highlight(graphics);

        // get the attributes to display in the grid
        var data =, i) {
          return (
              .filter(function(key) {
                // get fields that exist in the grid
                return gridFields.indexOf(key) !== -1;
              // need to create key value pairs from the feature
              // attributes so that info can be displayed in the grid
              .reduce((obj, key) => {
                obj[key] = feature.attributes[key];
                return obj;
              }, {})

        // set the datastore for the grid using the
        // attributes we got for the query results = data;
        grid.set("collection", dataStore);

Sample search results