2

I have this piece of script to customize the icon of some GeoRSS points, but I have no display and no error in the console.

  var map;
    require(["esri/map", "esri/layers/ArcGISTiledMapServiceLayer", 
            "esri/layers/GeoRSSLayer", "esri/InfoTemplate", "dojo/parser",
            "dojo/_base/array", "dojo/dom-style", "dijit/layout/BorderContainer",
            "dijit/layout/ContentPane", "esri/symbols/PictureMarkerSymbol",
            "esri/renderers/SimpleRenderer",
            "dojo/_base/Color","dojo/domReady!"],
    function(Map, Tiled, 
            GeoRSSLayer, InfoTemplate,
            parser, arrayUtils, PictureMarkerSymbol,
            SimpleRenderer, Color,  domStyle ) {
        
        map = new Map("map");
        var carte = new Tiled("http://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer");
        map.addLayer(carte);
        var georss = new GeoRSSLayer("http://dl.dropbox.com/u/2654618/data-mixed.xml");
           georss.on("load", function() {
                    domStyle.set("loading", "display", "none");
        // create an info template
                    var template = new InfoTemplate("${name}", "${description}");
  // set the info template for the feature layers that make up the GeoRSS layer
  // the GeoRSS layer contains one feature layer for each geometry type
                    var layers = georss.getFeatureLayers();
                    var picRenderer = new PictureMarkerSymbol("http://static.arcgis.com/images/Symbols/Shapes/YellowCircleLargeB.png", 16, 16);
                    var georssRenderer = new SimpleRenderer(picRenderer); 
                    arrayUtils.forEach(layers, function(l) {
                    l.setInfoTemplate(template);
                    l.setRenderer(georssRenderer)
});
});
                    map.addLayer(georss);
                                        //THE END                      
});
0

1 Answer 1

4

Your module IDs in your require dependency list do not match the aliases in the callback provided to require(). Things get out of whack after dojo/parser...

Here's a working example with a corrected require:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=7, IE=9, IE=10">
    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
    <title></title>
    <link rel="stylesheet" href="//js.arcgis.com/3.7/js/esri/css/esri.css">
    <style>
      html, body, #map {
        height: 100%; width: 100%; margin: 0; padding: 0; 
      }
    </style>

    <script src="//js.arcgis.com/3.7/"></script>
    <script>
var map;
require([
    "esri/map", "esri/layers/ArcGISTiledMapServiceLayer",
    "esri/layers/GeoRSSLayer", "esri/InfoTemplate", "dojo/parser",
    "dojo/_base/array", "dojo/dom-style", "esri/symbols/PictureMarkerSymbol", 
    "esri/renderers/SimpleRenderer", "dojo/_base/Color",
    "dijit/layout/BorderContainer", "dijit/layout/ContentPane",
    "dojo/domReady!"
], function (
    Map, Tiled,
    GeoRSSLayer, InfoTemplate, parser, 
    arrayUtils, domStyle, PictureMarkerSymbol,
    SimpleRenderer, Color
) {
    map = new Map("map");
    var carte = new Tiled("http://services.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer");
    map.addLayer(carte);
    var georss = new GeoRSSLayer("http://dl.dropbox.com/u/2654618/data-mixed.xml");
    georss.on("load", function () {
        // domStyle.set("loading", "display", "none");
        // create an info template
        var template = new InfoTemplate("${name}", "${description}");
        // set the info template for the feature layers that make up the GeoRSS layer
        // the GeoRSS layer contains one feature layer for each geometry type
        var layers = georss.getFeatureLayers();
        console.log("layers...because I'm curious", layers);
        var picRenderer = new PictureMarkerSymbol("http://static.arcgis.com/images/Symbols/Shapes/YellowCircleLargeB.png", 16, 16);
        var georssRenderer = new SimpleRenderer(picRenderer);
        arrayUtils.forEach(layers, function (l) {
            l.setInfoTemplate(template);
            l.setRenderer(georssRenderer)
       });
    });
    map.addLayer(georss);
    //THE END                      
});
    </script>
  </head>
  <body>
    <div id="map"></div>
  </body>
</html>

On jsbin: http://jsbin.com/OzIqegI/1/

Alternatively, if you only need to change the symbol used for points from a georss file, look at the pointSymbol constructor option:

var georss = new GeoRSSLayer("http://dl.dropbox.com/u/2654618/data-mixed.xml", {
  pointSymbol: new PictureMarkerSymbol("http://static.arcgis.com/images/Symbols/Shapes/YellowCircleLargeB.png", 16, 16)
});
map.addLayer(georss);

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.