//Add Latest RiverStages CSV Layers var riverCSVtemplate = new InfoTemplate(); riverCSVtemplate.setContent(getriverCSVTextContent); var LatestRiverStages = new CSVLayer("./data/riverquery.csv",{id:"LatestRiverStages",mode: FeatureLayer.MODE_SELECTION,outFields: ["*"],infoTemplate: riverCSVtemplate}); var Green = new Color([0, 255, 0, 1.0]); var labelField = "value"; var symbol = new TextSymbol(); symbol.setAlign = TextSymbol.ALIGN_MIDDLE; var font = new Font(); font.setSize("8pt"); font.setWeight(Font.WEIGHT_BOLD); symbol.setFont(font) symbol.setText("${" + labelField + "}") symbol.setColor(new Color(Green)); var renderer = new SimpleRenderer(symbol); LatestRiverStages.setRenderer(renderer); map.addLayer(LatestRiverStages); // LatestRiverStages.hide();
var map, csv; require([ "esri/map", "esri/layers/CSVLayer", "esri/Color", "esri/graphic", "esri/layers/GraphicsLayer", "esri/symbols/SimpleMarkerSymbol", "esri/renderers/SimpleRenderer", "esri/InfoTemplate", "esri/urlUtils", "esri/symbols/Font", "esri/symbols/TextSymbol", "dojo/on", "dojo/_base/array", "dojo/domReady!" ], function( Map, CSVLayer, Color, Graphic, GraphicsLayer, SimpleMarkerSymbol, SimpleRenderer, InfoTemplate, urlUtils, Font, TextSymbol, on, array ) { urlUtils.addProxyRule({ proxyUrl: "http://server1/proxy/proxy.ashx", urlPrefix: "skinner-lap" }); map = new Map("map", { basemap: "gray", center: [ -60, -10 ], zoom: 4 }); csv = new CSVLayer("http://server1/UserData/2.5_week.csv", { copyright: "USGS.gov" }); csv.on("update-end", function(results){ var textLayer = new GraphicsLayer(); array.forEach(results.target.graphics, function(feature, index){ var geom = feature.geometry; var displayText = feature.attributes.id; var font = new Font( "12pt", Font.STYLE_NORMAL, Font.VARIANT_NORMAL, Font.WEIGHT_BOLD, "Helvetica" ); var textSymbol = new TextSymbol( displayText, font, new Color("#DC143C") ); textLayer.add(new Graphic(geom, textSymbol)); }); map.addLayer(textLayer); }); var blank = new Color([0, 0, 0, 0]); // hex is #ff4500 var marker = new SimpleMarkerSymbol("solid", 0, null, blank); var renderer = new SimpleRenderer(marker); csv.setRenderer(renderer); map.addLayer(csv); });
//Add Latest RiverStages CSV Layers var riverCSVtemplate = new InfoTemplate(); riverCSVtemplate.setContent(getriverCSVTextContent); var LatestRiverStages = new CSVLayer("symGSPHydroViewer/data/riverquery.csv",{id:"LatestRiverStages",mode: FeatureLayer.MODE_SELECTION,outFields: ["*"],infoTemplate: riverCSVtemplate}); console.log("HERE1"); LatestRiverStages.on("update-end", function(results){ var textLayer = new GraphicsLayer(); console.log("HERE2"); array.forEach(results.target.graphics, function(feature, index){ console.log("HERE3"); var geom = feature.geometry; var displayText = feature.attributes.value; var font = new Font( "12pt", Font.STYLE_NORMAL, Font.VARIANT_NORMAL, Font.WEIGHT_BOLD, "Helvetica" ); var textSymbol = new TextSymbol( displayText, font, new Color("#DC143C") ); textLayer.add(new Graphic(geom, textSymbol)); }); map.addLayer(textLayer); }); console.log("HERE4"); var blank = new Color([0, 0, 0, 0]); // hex is #ff4500 var marker = new SimpleMarkerSymbol("solid", 0, null, blank); var renderer = new SimpleRenderer(marker); LatestRiverStages.setRenderer(renderer); map.addLayer(LatestRiverStages); console.log("HERE5");
Hi Charles,Using the 'update-end' event for the CSVLayer class, I was able to obtain the feature's attributes, and then use this as a TextSymbol. Here is the code I used:var map, csv; require([ "esri/map", "esri/layers/CSVLayer", "esri/Color", "esri/graphic", "esri/layers/GraphicsLayer", "esri/symbols/SimpleMarkerSymbol", "esri/renderers/SimpleRenderer", "esri/InfoTemplate", "esri/urlUtils", "esri/symbols/Font", "esri/symbols/TextSymbol", "dojo/on", "dojo/_base/array", "dojo/domReady!" ], function( Map, CSVLayer, Color, Graphic, GraphicsLayer, SimpleMarkerSymbol, SimpleRenderer, InfoTemplate, urlUtils, Font, TextSymbol, on, array ) { urlUtils.addProxyRule({ proxyUrl: "http://server1/proxy/proxy.ashx", urlPrefix: "skinner-lap" }); map = new Map("map", { basemap: "gray", center: [ -60, -10 ], zoom: 4 }); csv = new CSVLayer("http://server1/UserData/2.5_week.csv", { copyright: "USGS.gov" }); csv.on("update-end", function(results){ var textLayer = new GraphicsLayer(); array.forEach(results.target.graphics, function(feature, index){ var geom = feature.geometry; var displayText = feature.attributes.id; var font = new Font( "12pt", Font.STYLE_NORMAL, Font.VARIANT_NORMAL, Font.WEIGHT_BOLD, "Helvetica" ); var textSymbol = new TextSymbol( displayText, font, new Color("#DC143C") ); textLayer.add(new Graphic(geom, textSymbol)); }); map.addLayer(textLayer); }); var blank = new Color([0, 0, 0, 0]); // hex is #ff4500 var marker = new SimpleMarkerSymbol("solid", 0, null, blank); var renderer = new SimpleRenderer(marker); csv.setRenderer(renderer); map.addLayer(csv); });
function getriverCSVTextContent (graphic) { var attributes = graphic.attributes; var value = "Obs Value: " + attributes.value; var validtime = "Valid Time: " + attributes.validtime; return value + "</b><br />" + validtime }
Hi Charles,When are you calling this function? Can you post your code and possibly the CSV file you are using?
//Add Latest RiverStages CSV Layers var riverCSVtemplate = new InfoTemplate(); riverCSVtemplate.setContent(getriverCSVTextContent); var LatestRiverStages = new CSVLayer("symGSPHydroViewer/data/riverquery.csv",{id:"LatestRiverStages",mode: FeatureLayer.MODE_SELECTION,outFields: ["*"],infoTemplate: riverCSVtemplate}); console.log("HERE1"); LatestRiverStages.on("update-end", function(results){ var textLayer = new GraphicsLayer(); console.log("HERE2"); arrayUtils.forEach(results.target.graphics, function(feature, index){ console.log("HERE3"); var geom = feature.geometry; var displayText = feature.attributes.value; var font = new Font( "12pt", Font.STYLE_NORMAL, Font.VARIANT_NORMAL, Font.WEIGHT_BOLD, "Helvetica" ); var textSymbol = new TextSymbol( displayText, font, new Color("#DC143C") ); textLayer.add(new Graphic(geom, textSymbol)); }); map.addLayer(textLayer); }); console.log("HERE4"); var blank = new Color([0, 0, 0, 0]); // hex is #ff4500 var marker = new SimpleMarkerSymbol("solid", 0, null, blank); var renderer = new SimpleRenderer(marker); LatestRiverStages.setRenderer(renderer); map.addLayer(LatestRiverStages); console.log("HERE5"); function getriverCSVTextContent (graphic) { console.log("sample"); var attributes = graphic.attributes; var value = "Obs Value: " + attributes.value; var validtime = "Valid Time: " + attributes.validtime; return value + "</b><br />" + validtime }
You can zip up the code and CSV file, and then upload the zip file.
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/> <title>Simple Map</title> <link rel="stylesheet" href="http://js.arcgis.com/3.9/js/esri/css/esri.css"> <style> html, body, #map { height: 100%; width: 100%; margin: 0; padding: 0; } body { background-color: #FFF; overflow: hidden; font-family: "Trebuchet MS"; } </style> <script src="http://js.arcgis.com/3.9/"></script> <script> var map, csv, textLayer; require([ "esri/map", "esri/layers/CSVLayer", "esri/Color", "esri/graphic", "esri/layers/GraphicsLayer", "esri/symbols/SimpleMarkerSymbol", "esri/renderers/SimpleRenderer", "esri/InfoTemplate", "esri/urlUtils", "esri/symbols/Font", "esri/symbols/TextSymbol", "dojo/on", "dojo/_base/array", "dojo/domReady!" ], function( Map, CSVLayer, Color, Graphic, GraphicsLayer, SimpleMarkerSymbol, SimpleRenderer, InfoTemplate, urlUtils, Font, TextSymbol, on, array ) { urlUtils.addProxyRule({ proxyUrl: "http://server1/proxy/proxy.ashx", urlPrefix: "server1" }); map = new Map("map", { basemap: "gray", center: [-81.874901, 35.824528], zoom: 8 }); csv = new CSVLayer("http://server1/UserData/riverquery.csv"); csv.on("update-end", function(results){ textLayer = new GraphicsLayer(); array.forEach(results.target.graphics, function(feature, index){ var lid = feature.attributes.lid; var value = feature.attributes.value; var pe = feature.attributes.pe; var ts = feature.attributes.ts; var attr = {"Value":value,"PE":pe,"TS":ts}; var geom = feature.geometry; var displayText = feature.attributes.lid; var font = new Font( "12pt", Font.STYLE_NORMAL, Font.VARIANT_NORMAL, Font.WEIGHT_BOLD, "Helvetica" ); var textSymbol = new TextSymbol( displayText, font, new Color("#DC143C") ); textLayer.add(new Graphic(geom, textSymbol, attr)); }); var infoTemplate = new InfoTemplate("Attributes", "${*}"); textLayer.setInfoTemplate(infoTemplate); map.addLayer(textLayer); }); var blank = new Color([0, 0, 0, 0]); // hex is #ff4500 var marker = new SimpleMarkerSymbol("solid", 0, null, blank); var renderer = new SimpleRenderer(marker); csv.setRenderer(renderer); map.addLayer(csv); }); </script> </head> <body> <div id="map"></div> </body> </html>
Signed in members can post, follow updates, and more. New here? Register a free account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.