Hello.
var webStyleSymbol = new WebStyleSymbol({
name: "Ambulance",
styleName: "EsriRealisticTransportationStyle"
});
I want to add a 3D ambulance icon into a graphicslayer.
I'm facing "Failed to create symbol from style" error.
I tried some codes but failed always. Can anyone help me please?
Tuba,
You are attempting to use this in a WebScene right? Also you can utilize the APIs autocasting by using:
// Referencing a web style via styleName
var webStyleSymbol = {
  type: "web-style",  // autocasts as new WebStyleSymbol()
  styleName: "EsriRealisticTransportationStyle",
  name: "Ambulance"
};
					
				
			
			
				
			
			
				
			
			
			
			
			
			
		Thanks for the answer. Yes in sceneview, But i don't know what i'm doing wrong
I want to add this symbol into clicked mouse position and clicked elevation height
here is my code,
on map mouse click event
var point = {
type= "point",
x: e.mapPoint.longitude,
y: e.mapPoint.latitude,
z: myHeight // came from elevation query
}
var webStyleSymbol = {
type: "web-style", // autocasts as new WebStyleSymbol()
styleName: "EsriRealisticTransportationStyle",
name: "Ambulance"
};var gr = new Graphic {
geometry: point,
symbol: webStyleSymbol
}
myGraphicsLayer.graphics.add(gr);
But i see nothing
Tuba,
Here is a sample where I add a ambulance to a Graphics layer based on hard coded coordinates:
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
  <title>Visualize features with realistic WebStyleSymbols - 4.6</title>
  <link rel="stylesheet" href="https://js.arcgis.com/4.6/esri/css/main.css">
  <script src="https://js.arcgis.com/4.6/"></script>
  <style>
    html,
    body,
    #viewDiv {
      padding: 0;
      margin: 0;
      height: 100%;
      width: 100%;
    }
  </style>
  <script>
    require([
      "esri/WebScene",
      "esri/views/SceneView",
      "esri/layers/FeatureLayer",
      "esri/layers/GraphicsLayer",
      "esri/Graphic",
      "esri/tasks/support/Query",
      "dojo/domReady!"
    ], function(WebScene, SceneView, FeatureLayer, GraphicsLayer, Graphic, Query) {
      // Create the web scene
      var map = new WebScene({
        basemap: "satellite",
        ground: "world-elevation"
      });
      // Create the view
      var view = new SceneView({
        container: "viewDiv",
        map: map,
        camera: {
          position: {
            latitude: 39.957011,
            longitude: -75.169457,
            z: 26
          },
          tilt: 78,
          heading: 315
        },
        environment: {
          lighting: {
            date: new Date("June 15, 2015 16:00:00 EDT"),
            directShadowsEnabled: true,
            ambientOcclusionEnabled: true
          }
        }
      });
      /**********************************************
       * Add layer containing transportation features
       **********************************************/
      // var transportationRenderer = {
      //   type: "simple", // autocasts as new UniqueValueRenderer()
      //   symbol: {
      //     type: "web-style", // autocasts as new WebStyleSymbol()
      //     name: "Ambulance",
      //     styleName: "EsriRealisticTransportationStyle"
      //   },
      //   visualVariables: [{
      //     type: "rotation",
      //     // cars need to have a rotation field so that they are aligned to the street
      //     field: "ROTATION"
      //   }, {
      //     type: "size",
      //     field: "SIZE",
      //     axis: "depth"
      //   }]
      // };
      var myGraphicsLayer =  new GraphicsLayer();
      map.add(myGraphicsLayer);
      var point0 = {
        type: "point", // autocasts as new Point()
        x: -75.1701625078934,
        y: 39.957308192519122
      };
      var pointGraphic = new Graphic({
        geometry: point0,
        symbol: {
          type: "web-style", // autocasts as new WebStyleSymbol()
          name: "Ambulance",
          styleName: "EsriRealisticTransportationStyle"
        },
        attributes: {
          ObjectID: 0,
          SIZE: 12,
          ROTATION: 100
        }
      });
      myGraphicsLayer.add(pointGraphic);
      // var fields = [{
      //   name: "ObjectID",
      //   alias: "ObjectID",
      //   type: "oid"
      // }, {
      //   name: "ROTATION",
      //   alias: "Rotation",
      //   type: "integer"
      // }, {
      //   name: "CATEGORY",
      //   alias: "Category",
      //   type: "string"
      // }, {
      //   name: "SIZE",
      //   alias: "Size",
      //   type: "integer"
      // }];
      //
      // var point = {
      //   type: "point", // autocasts as new Point()
      //   x: -75.1701625078934,
      //   y: 39.957308192519122
      // };
      // var gra = {
      //   geometry: point,
      //   attributes: {
      //     ObjectID: 1,
      //     SIZE: 12,
      //     ROTATION: 100
      //   }
      // }
      //
      // lyr = new FeatureLayer({
      //   source: [gra], // autocast as an array of esri/Graphic
      //   // create an instance of esri/layers/support/Field for each field object
      //   fields: fields, // This is required when creating a layer from Graphics
      //   objectIdField: "ObjectID", // This must be defined when creating a layer from Graphics
      //   renderer: transportationRenderer, // set the visualization on the layer
      //   spatialReference: {
      //     wkid: 4326
      //   },
      //   geometryType: "point", // Must be set when creating a layer from Graphics
      //   elevationInfo: {
      //     mode: "on-the-ground"
      //   }
      // });
      //map.add(lyr);
    });
  </script>
</head>
<body>
  <div id="viewDiv"></div>
</body>
</html>
					
				
			
			
				
			
			
				
			
			
			
			
			
			
		Thanks for helpfull code Robert.
I copied your whole sample code and paste it into a html document.
I tried on 2 different machines (no internet access) but i'm still getting error.
Failed to load https://www.arcgis.com/sharing/rest/portals/self?f=json&culture=tr-tr: The 'Access-Control-Allow-Origin' header has a value 'null' that is not equal to the supplied origin. Origin 'null' is therefore not allowed access.
[esri.symbols.WebStyleSymbol] #fetchSymbol() Failed to create symbol from style
I have no internet access on my computers.
I tried your sample code on JSFIDDLE. This is working good.
Esri JS API 4.6 TEMPLATE - JSFiddle
is web-style-symbols need to internet connection?
Tuba,
As far as I know YES they do.
I think that we should be able to add webstylesymbol without internet connection.
Hello, thank you for the sample code! It helped me a lot.
However, the following parameters seem to have no effect:
attributes: {
  ObjectID: 0,
  SIZE: 12,
  ROTATION: 100
}No matter how I set the ROTATION parameter, the model always points to the north. I would like to ask if it is possible to rotate the model? Thank you!