Hello, I am having some problems with the esriJson format, I tried replacing the javascript new SimpleRenderer with esriJson but I get an error:
"Uncaught (in promise) TypeError: f.getSymbol is not a function"
However when i create it with javascript it works. I actually want to create a PictureMarker with esrijson but i thought i would start simple with a cricle. Please help me locate the problem.
var template = {
    title: "<font color='black'>Basestation ID: {idBasestation}</font>",
    content: "Hello: {idBasestationData}",
 };
var graphics = [
 {
    geometry: new Point({
       x: -100,
       y: 38
    }),
    attributes: {
       idBasestationData : 3,
       idBasestation: 3000,
    }
 }];
var lyr = new FeatureLayer({
    fields: [
    {
       name: "idBasestationData",
       alias: "idBasestationData",
       type: "oid"
    }, {
       name: "idBasestation",
       alias: "idBasestation",
       type: "integer"
    }],
    objectIdField: "ObjectID",
    geometryType: "point",
    spatialReference: { wkid: 4326 },
    source: graphics,
    renderer: 
    { 
       type: "simple",
       symbol:
       {
          type: "esriSMS",
          style: "esriSMSCircle",
          color: [255,0,0,255],
          size: 5,
          angle: 0,
          xoffset: 0,
          yoffset: 0,
          outline: 
          {
             color: [0,0,0,255],
             width: 1
          },
       },
       label: "",
       description: "",
       rotationType: "geographic",
       rotationExpression: 0
   },
    popupTemplate: template
 });
 
/* If I use the code below it works
renderer : new SimpleRenderer({
    symbol: new PictureMarkerSymbol({
       url: "https://webapps-cdn.esri.com/Apps/MegaMenu/img/logo.jpg",
       width: "30px",
       height: "30px"
    })
 })
 */
map.add(lyr);
 });
It looks to me like the renderer JSON is not automatically being used to construct a new instance of esri/renderers/SimpleRenderer. This needs to happen (although technically you may be able to add a .getSymbol function to your renderer JSON and have it work fine, I would not recommend this). I'm not sure if it matters whether you make the call to create a new renderer or if the API is smart enough to recognize that it needs to make the call.
If you're starting from JSON, you can use SimpleRenderer.fromJSON(<renderer JSON>) in the 4.XX API or new SimpleRenderer(<renderer JSON>) in the 3.XX API.
Which version of the api are you using?
You could a always use the json to create the renderer like below
renderer: new SimpleRenderer({
    "type": "simple",
    "label": "",
    "description": "",
    "symbol": {
      "color": [210,105,30,191],
      "size": 6,
      "angle": 0,
      "xoffset": 0,
      "yoffset": 0,
      "type": "esriSMS",
      "style": "esriSMSCircle",
      "outline": {
        "color": [0,0,128,255],
        "width": 0,
        "type": "esriSLS",
        "style": "esriSLSSolid"
      }
    }
  })Make sure all the properties provided are valid, otherwise they will be ignored.
