I am trying to plot some GPS points data in form of markers on map.
After the map is rendered, I add a FeatureLayer onto map and in that the markers are added as graphics.
The fourth point/graphic that I am trying to add after the layer has once been added to map, is not showing up on map, although no error shows when I run this code. See the line with the comment "// The following does not work as expected:"
So my question is, How can I add new graphics on an ArcGIS map on an existing Feature Layer?
Here is the complete code JSBin:<CODE><SPAN class=""><script></SPAN><SPAN class=""> require</SPAN><SPAN class="">([</SPAN><SPAN class=""> </SPAN><SPAN class="">"esri/views/MapView"</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">"esri/Map"</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">"esri/layers/FeatureLayer"</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">"esri/layers/support/Field"</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">"esri/geometry/Point"</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">"esri/renderers/SimpleRenderer"</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">"esri/symbols/SimpleMarkerSymbol"</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">"dojo/dom"</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">"dojo/on"</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">"dojo/domReady!"</SPAN><SPAN class=""> </SPAN><SPAN class="">],</SPAN><SPAN class=""> </SPAN><SPAN class="">function</SPAN><SPAN class="">(</SPAN><SPAN class="">MapView</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">Map</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">FeatureLayer</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">Field</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">Point</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">SimpleRenderer</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">SimpleMarkerSymbol</SPAN><SPAN class="">,</SPAN><SPAN class=""> dom</SPAN><SPAN class="">,</SPAN><SPAN class=""> on </SPAN><SPAN class="">)</SPAN><SPAN class=""> </SPAN><SPAN class="">{</SPAN><SPAN class=""> </SPAN><SPAN class="">var</SPAN><SPAN class=""> lyr</SPAN><SPAN class="">,</SPAN><SPAN class=""> legend</SPAN><SPAN class="">;</SPAN><SPAN class=""> </SPAN><SPAN class="">var</SPAN><SPAN class=""> data</SPAN><SPAN class="">;</SPAN><SPAN class=""> </SPAN><SPAN class="">var</SPAN><SPAN class=""> graphics</SPAN><SPAN class="">;</SPAN><SPAN class=""> </SPAN><SPAN class="">/************************************************** * Define the specification for each field to create * in the layer **************************************************/</SPAN><SPAN class=""> </SPAN><SPAN class="">var</SPAN><SPAN class=""> fields </SPAN><SPAN class="">=</SPAN><SPAN class=""> </SPAN><SPAN class="">[</SPAN><SPAN class=""> </SPAN><SPAN class="">{</SPAN><SPAN class=""> name</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"ObjectID"</SPAN><SPAN class="">,</SPAN><SPAN class=""> alias</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"ObjectID"</SPAN><SPAN class="">,</SPAN><SPAN class=""> type</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"oid"</SPAN><SPAN class=""> </SPAN><SPAN class="">},</SPAN><SPAN class=""> </SPAN><SPAN class="">{</SPAN><SPAN class=""> name</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"name"</SPAN><SPAN class="">,</SPAN><SPAN class=""> alias</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"name"</SPAN><SPAN class="">,</SPAN><SPAN class=""> type</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"string"</SPAN><SPAN class=""> </SPAN><SPAN class="">},</SPAN><SPAN class=""> </SPAN><SPAN class="">{</SPAN><SPAN class=""> name</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"lat"</SPAN><SPAN class="">,</SPAN><SPAN class=""> alias</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"lat"</SPAN><SPAN class="">,</SPAN><SPAN class=""> type</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"number"</SPAN><SPAN class=""> </SPAN><SPAN class="">},</SPAN><SPAN class=""> </SPAN><SPAN class="">{</SPAN><SPAN class=""> name</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"lng"</SPAN><SPAN class="">,</SPAN><SPAN class=""> alias</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"lng"</SPAN><SPAN class="">,</SPAN><SPAN class=""> type</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"number"</SPAN><SPAN class=""> </SPAN><SPAN class="">}];</SPAN><SPAN class=""> </SPAN><SPAN class="">/************************************************** * Create the map and view **************************************************/</SPAN><SPAN class=""> </SPAN><SPAN class="">var</SPAN><SPAN class=""> map </SPAN><SPAN class="">=</SPAN><SPAN class=""> </SPAN><SPAN class="">new</SPAN><SPAN class=""> </SPAN><SPAN class="">Map</SPAN><SPAN class="">({</SPAN><SPAN class=""> basemap</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"streets"</SPAN><SPAN class="">,</SPAN><SPAN class=""> ground</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"world-elevation"</SPAN><SPAN class=""> </SPAN><SPAN class="">});</SPAN><SPAN class=""> </SPAN><SPAN class="">// Create MapView</SPAN><SPAN class=""> </SPAN><SPAN class="">var</SPAN><SPAN class=""> view </SPAN><SPAN class="">=</SPAN><SPAN class=""> </SPAN><SPAN class="">new</SPAN><SPAN class=""> </SPAN><SPAN class="">MapView</SPAN><SPAN class="">({</SPAN><SPAN class=""> container</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"viewDiv"</SPAN><SPAN class="">,</SPAN><SPAN class=""> map</SPAN><SPAN class="">:</SPAN><SPAN class=""> map</SPAN><SPAN class="">,</SPAN><SPAN class=""> center</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">[-</SPAN><SPAN class="">73.994909</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">40.739041</SPAN><SPAN class="">],</SPAN><SPAN class=""> zoom</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">14</SPAN><SPAN class=""> </SPAN><SPAN class="">});</SPAN><SPAN class=""> </SPAN><SPAN class="">var</SPAN><SPAN class=""> pointsRenderer </SPAN><SPAN class="">=</SPAN><SPAN class=""> </SPAN><SPAN class="">new</SPAN><SPAN class=""> </SPAN><SPAN class="">SimpleRenderer</SPAN><SPAN class="">({</SPAN><SPAN class=""> symbol</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">new</SPAN><SPAN class=""> </SPAN><SPAN class="">SimpleMarkerSymbol</SPAN><SPAN class="">({</SPAN><SPAN class=""> style</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"circle"</SPAN><SPAN class="">,</SPAN><SPAN class=""> size</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">20</SPAN><SPAN class="">,</SPAN><SPAN class=""> color</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">[</SPAN><SPAN class="">211</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">255</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">0</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">0</SPAN><SPAN class="">],</SPAN><SPAN class=""> outline</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">{</SPAN><SPAN class=""> width</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">1</SPAN><SPAN class="">,</SPAN><SPAN class=""> color</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"#FF0055"</SPAN><SPAN class="">,</SPAN><SPAN class=""> style</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"solid"</SPAN><SPAN class=""> </SPAN><SPAN class="">}</SPAN><SPAN class=""> </SPAN><SPAN class="">})</SPAN><SPAN class=""> </SPAN><SPAN class="">});</SPAN><SPAN class=""> view</SPAN><SPAN class="">.</SPAN><SPAN class="">then</SPAN><SPAN class="">(</SPAN><SPAN class="">function</SPAN><SPAN class="">()</SPAN><SPAN class=""> </SPAN><SPAN class="">{</SPAN><SPAN class=""> </SPAN><SPAN class="">// Request the earthquake data from USGS when the view resolves</SPAN><SPAN class=""> data </SPAN><SPAN class="">=</SPAN><SPAN class=""> getData</SPAN><SPAN class="">();</SPAN><SPAN class=""> graphics </SPAN><SPAN class="">=</SPAN><SPAN class=""> createGraphics</SPAN><SPAN class="">(</SPAN><SPAN class="">data</SPAN><SPAN class="">);</SPAN><SPAN class=""> </SPAN><SPAN class="">// then send it to the createGraphics() method</SPAN><SPAN class=""> lyr </SPAN><SPAN class="">=</SPAN><SPAN class=""> createLayer</SPAN><SPAN class="">(</SPAN><SPAN class="">graphics</SPAN><SPAN class="">);</SPAN><SPAN class=""> </SPAN><SPAN class="">// when graphics are created, create the layer</SPAN><SPAN class=""> </SPAN><SPAN class="">// The following does not work as expected:</SPAN><SPAN class=""> view</SPAN><SPAN class="">.</SPAN><SPAN class="">whenLayerView</SPAN><SPAN class="">(</SPAN><SPAN class="">lyr</SPAN><SPAN class="">).</SPAN><SPAN class="">then</SPAN><SPAN class="">(</SPAN><SPAN class="">function</SPAN><SPAN class="">(</SPAN><SPAN class="">lyrView</SPAN><SPAN class="">){</SPAN><SPAN class=""> lyrView</SPAN><SPAN class="">.</SPAN><SPAN class="">applyEdits</SPAN><SPAN class="">({</SPAN><SPAN class=""> addFeatures</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">[{</SPAN><SPAN class=""> geometry</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">new</SPAN><SPAN class=""> </SPAN><SPAN class="">Point</SPAN><SPAN class="">({</SPAN><SPAN class=""> x</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">-</SPAN><SPAN class="">73.983013</SPAN><SPAN class="">,</SPAN><SPAN class=""> y</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">40.741236</SPAN><SPAN class=""> </SPAN><SPAN class="">}),</SPAN><SPAN class=""> </SPAN><SPAN class="">// select only the attributes you care about</SPAN><SPAN class=""> attributes</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">{</SPAN><SPAN class=""> </SPAN><SPAN class="">ObjectID</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">4</SPAN><SPAN class="">,</SPAN><SPAN class=""> name</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"Unit-4"</SPAN><SPAN class="">,</SPAN><SPAN class=""> lat</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">40.741236</SPAN><SPAN class="">,</SPAN><SPAN class=""> lng</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">-</SPAN><SPAN class="">73.983013</SPAN><SPAN class=""> </SPAN><SPAN class="">}</SPAN><SPAN class=""> </SPAN><SPAN class="">}]</SPAN><SPAN class=""> </SPAN><SPAN class="">})</SPAN><SPAN class=""> </SPAN><SPAN class="">});</SPAN><SPAN class=""> </SPAN><SPAN class="">});</SPAN><SPAN class=""> </SPAN><SPAN class="">// Request the earthquake data</SPAN><SPAN class=""> </SPAN><SPAN class="">function</SPAN><SPAN class=""> getData</SPAN><SPAN class="">()</SPAN><SPAN class=""> </SPAN><SPAN class="">{</SPAN><SPAN class=""> </SPAN><SPAN class="">return</SPAN><SPAN class=""> </SPAN><SPAN class="">[{</SPAN><SPAN class=""> </SPAN><SPAN class="">ObjectID</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">1</SPAN><SPAN class="">,</SPAN><SPAN class=""> name</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"Unit-1"</SPAN><SPAN class="">,</SPAN><SPAN class=""> lat</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">40.739041</SPAN><SPAN class="">,</SPAN><SPAN class=""> lng</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">-</SPAN><SPAN class="">73.994909</SPAN><SPAN class=""> </SPAN><SPAN class="">},</SPAN><SPAN class=""> </SPAN><SPAN class="">{</SPAN><SPAN class=""> </SPAN><SPAN class="">ObjectID</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">2</SPAN><SPAN class="">,</SPAN><SPAN class=""> name</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"Unit-2"</SPAN><SPAN class="">,</SPAN><SPAN class=""> lat</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">40.742102</SPAN><SPAN class="">,</SPAN><SPAN class=""> lng</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">-</SPAN><SPAN class="">73.985043</SPAN><SPAN class=""> </SPAN><SPAN class="">},</SPAN><SPAN class=""> </SPAN><SPAN class="">{</SPAN><SPAN class=""> </SPAN><SPAN class="">ObjectID</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">3</SPAN><SPAN class="">,</SPAN><SPAN class=""> name</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"Unit-3"</SPAN><SPAN class="">,</SPAN><SPAN class=""> lat</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">40.742856</SPAN><SPAN class="">,</SPAN><SPAN class=""> lng</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">-</SPAN><SPAN class="">73.984965</SPAN><SPAN class=""> </SPAN><SPAN class="">}];</SPAN><SPAN class=""> </SPAN><SPAN class="">}</SPAN><SPAN class=""> </SPAN><SPAN class="">/************************************************** * Create graphics with returned geojson data **************************************************/</SPAN><SPAN class=""> </SPAN><SPAN class="">function</SPAN><SPAN class=""> createGraphics</SPAN><SPAN class="">(</SPAN><SPAN class="">response</SPAN><SPAN class="">)</SPAN><SPAN class=""> </SPAN><SPAN class="">{</SPAN><SPAN class=""> </SPAN><SPAN class="">// raw GeoJSON data</SPAN><SPAN class=""> </SPAN><SPAN class="">var</SPAN><SPAN class=""> geoJson </SPAN><SPAN class="">=</SPAN><SPAN class=""> response</SPAN><SPAN class="">;</SPAN><SPAN class=""> </SPAN><SPAN class="">// Create an array of Graphics from each GeoJSON feature</SPAN><SPAN class=""> </SPAN><SPAN class="">return</SPAN><SPAN class=""> geoJson</SPAN><SPAN class="">.</SPAN><SPAN class="">map</SPAN><SPAN class="">(</SPAN><SPAN class="">function</SPAN><SPAN class="">(</SPAN><SPAN class="">m</SPAN><SPAN class="">,</SPAN><SPAN class=""> i</SPAN><SPAN class="">)</SPAN><SPAN class=""> </SPAN><SPAN class="">{</SPAN><SPAN class=""> </SPAN><SPAN class="">return</SPAN><SPAN class=""> </SPAN><SPAN class="">{</SPAN><SPAN class=""> geometry</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">new</SPAN><SPAN class=""> </SPAN><SPAN class="">Point</SPAN><SPAN class="">({</SPAN><SPAN class=""> x</SPAN><SPAN class="">:</SPAN><SPAN class=""> m</SPAN><SPAN class="">.</SPAN><SPAN class="">lng</SPAN><SPAN class="">,</SPAN><SPAN class=""> y</SPAN><SPAN class="">:</SPAN><SPAN class=""> m</SPAN><SPAN class="">.</SPAN><SPAN class="">lat </SPAN><SPAN class="">}),</SPAN><SPAN class=""> </SPAN><SPAN class="">// select only the attributes you care about</SPAN><SPAN class=""> attributes</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">{</SPAN><SPAN class=""> </SPAN><SPAN class="">ObjectID</SPAN><SPAN class="">:</SPAN><SPAN class=""> i</SPAN><SPAN class="">,</SPAN><SPAN class=""> name</SPAN><SPAN class="">:</SPAN><SPAN class=""> m</SPAN><SPAN class="">.</SPAN><SPAN class="">name</SPAN><SPAN class="">,</SPAN><SPAN class=""> lat</SPAN><SPAN class="">:</SPAN><SPAN class=""> m</SPAN><SPAN class="">.</SPAN><SPAN class="">lat</SPAN><SPAN class="">,</SPAN><SPAN class=""> lng</SPAN><SPAN class="">:</SPAN><SPAN class=""> m</SPAN><SPAN class="">.</SPAN><SPAN class="">lng </SPAN><SPAN class="">}</SPAN><SPAN class=""> </SPAN><SPAN class="">};</SPAN><SPAN class=""> </SPAN><SPAN class="">});</SPAN><SPAN class=""> </SPAN><SPAN class="">}</SPAN><SPAN class=""> </SPAN><SPAN class="">/************************************************** * Create a FeatureLayer with the array of graphics **************************************************/</SPAN><SPAN class=""> </SPAN><SPAN class="">function</SPAN><SPAN class=""> createLayer</SPAN><SPAN class="">(</SPAN><SPAN class="">graphics</SPAN><SPAN class="">)</SPAN><SPAN class=""> </SPAN><SPAN class="">{</SPAN><SPAN class=""> </SPAN><SPAN class="">var</SPAN><SPAN class=""> layer </SPAN><SPAN class="">=</SPAN><SPAN class=""> </SPAN><SPAN class="">new</SPAN><SPAN class=""> </SPAN><SPAN class="">FeatureLayer</SPAN><SPAN class="">({</SPAN><SPAN class=""> source</SPAN><SPAN class="">:</SPAN><SPAN class=""> graphics</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">// autocast as an array of esri/Graphic</SPAN><SPAN class=""> </SPAN><SPAN class="">// create an instance of esri/layers/support/Field for each field object</SPAN><SPAN class=""> fields</SPAN><SPAN class="">:</SPAN><SPAN class=""> fields</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">// This is required when creating a layer from Graphics</SPAN><SPAN class=""> objectIdField</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"ObjectID"</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">// This must be defined when creating a layer from Graphics</SPAN><SPAN class=""> renderer</SPAN><SPAN class="">:</SPAN><SPAN class=""> pointsRenderer</SPAN><SPAN class="">,</SPAN><SPAN class=""> </SPAN><SPAN class="">// set the visualization on the layer</SPAN><SPAN class=""> spatialReference</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">{</SPAN><SPAN class=""> wkid</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">4326</SPAN><SPAN class=""> </SPAN><SPAN class="">},</SPAN><SPAN class=""> geometryType</SPAN><SPAN class="">:</SPAN><SPAN class=""> </SPAN><SPAN class="">"point"</SPAN><SPAN class=""> </SPAN><SPAN class="">// Must be set when creating a layer from Graphics</SPAN><SPAN class=""> </SPAN><SPAN class="">});</SPAN><SPAN class=""> map</SPAN><SPAN class="">.</SPAN><SPAN class="">add</SPAN><SPAN class="">(</SPAN><SPAN class="">layer</SPAN><SPAN class="">);</SPAN><SPAN class=""> </SPAN><SPAN class="">return</SPAN><SPAN class=""> layer</SPAN><SPAN class="">;</SPAN><SPAN class=""> </SPAN><SPAN class="">}</SPAN><SPAN class=""> </SPAN><SPAN class="">});</SPAN><SPAN class=""> </SPAN><SPAN class=""></script>
</SPAN>