<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: esri is not defined inside JavaScript class in ArcGIS JavaScript Maps SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/esri-is-not-defined-inside-javascript-class/m-p/721056#M66917</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;&lt;BR /&gt;the init is called, but when entering the function dojo.ready(initMap()); FireBug gives me a ReferenceError: esri is not defined (this.map = new esri.Map("map",{.....)&lt;BR /&gt;&lt;BR /&gt;How can I make this work?&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Change:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
dojo.ready(initMap())
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;To:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
dojo.ready(initMap)
&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;When you pass initMap() to dojo.ready, you're passing the return value of the initMap function instead of the initMap function itself. You want initMap to run when dojo.ready runs (this ensures esri.Map has been loaded), not before, which is what is probably happening with the current version of your code.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sun, 12 Dec 2021 06:50:49 GMT</pubDate>
    <dc:creator>derekswingley1</dc:creator>
    <dc:date>2021-12-12T06:50:49Z</dc:date>
    <item>
      <title>esri is not defined inside JavaScript class</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/esri-is-not-defined-inside-javascript-class/m-p/721054#M66915</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Hi guys,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I'm trying to build a new web map with javascript class, but it seems that dojo.require doesn't work well with javascript class.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is my index.html code:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;&amp;lt;html&amp;gt;
 &amp;lt;head&amp;gt;
&amp;nbsp; &amp;lt;!-- TITRE --&amp;gt;
&amp;nbsp; &amp;lt;title&amp;gt;Cartographie 2.0&amp;lt;/title&amp;gt;
 
&amp;nbsp; &amp;lt;!-- FORMATAGE --&amp;gt;
&amp;nbsp; &amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&amp;gt;
&amp;nbsp; 
&amp;nbsp; &amp;lt;!-- DOCTYPE --&amp;gt;
&amp;nbsp; &amp;lt;!DOCTYPE html&amp;gt;
 
&amp;nbsp; &amp;lt;!-- XHTML --&amp;gt;
&amp;nbsp; &amp;lt;html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"&amp;gt;
 
&amp;nbsp; &amp;lt;!-- CSS --&amp;gt;
&amp;nbsp; &amp;lt;link rel="stylesheet" href="css/interface.css" type="text/css"&amp;gt;
 
&amp;nbsp; &amp;lt;!-- JAVASCRIPT --&amp;gt;
&amp;nbsp; &amp;lt;script src="http://serverapi.arcgisonline.com/jsapi/arcgis/3.3/"&amp;gt;&amp;lt;/script&amp;gt;
&amp;nbsp; &amp;lt;script type="text/javascript" src="js/jquery-1.9.1.min.js" &amp;gt;&amp;lt;/script&amp;gt;
&amp;nbsp; &amp;lt;script type="text/javascript" src="js/jquery-ui-1.10.1.custom.min.js" &amp;gt;&amp;lt;/script&amp;gt;
&amp;nbsp; &amp;lt;script type="text/javascript" src="js/mapper.js" &amp;gt;&amp;lt;/script&amp;gt;
&amp;nbsp; 
&amp;nbsp; &amp;lt;script type="text/javascript"&amp;gt;
&amp;nbsp;&amp;nbsp; var oMapper = new Mapper();
&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $(document).ready(function()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oMapper.init();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; console.dir(initMap());
&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp; 
&amp;nbsp; &amp;lt;/script&amp;gt;
 
 &amp;lt;/head&amp;gt;
 &amp;lt;body&amp;gt;
&amp;nbsp; &amp;lt;div id="main" class="container"&amp;gt;
&amp;nbsp; &amp;lt;/div&amp;gt;
 &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;and there is my javascript class:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;
dojo.require("esri.map");

/*
 * Objet Mapper
 */
function Mapper()
{
 // public variables
 this.map;
 
 // private variables
 
 
 // public functions
 this.init = init;
 this.initMap = initMap;
 this.buildDivs = buildDivs;
 
 function init()
 {
&amp;nbsp; console.log("init");
&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; buildDivs();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.ready(initMap());
 }
 
 function initMap()
 {
&amp;nbsp; this.map = new esri.Map("map",{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; basemap:"topo",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; center:[-122.45,37.75], //long, lat
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zoom:13,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sliderStyle:"small"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
 }
 
 function buildDivs()
 {
&amp;nbsp; div_main = $('#main');
&amp;nbsp; div_map = $('&amp;lt;div id="map"&amp;gt;&amp;lt;/div&amp;gt;');
&amp;nbsp; div_main.append(div_map);
 } 
 
}&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;When my app is called, the init is called, but when entering the function dojo.ready(initMap()); FireBug gives me a ReferenceError: esri is not defined (this.map = new esri.Map("map",{.....)&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;How can I make this work?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 11 Mar 2013 14:41:01 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/esri-is-not-defined-inside-javascript-class/m-p/721054#M66915</guid>
      <dc:creator>YvanBérard</dc:creator>
      <dc:date>2013-03-11T14:41:01Z</dc:date>
    </item>
    <item>
      <title>Re: esri is not defined inside JavaScript class</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/esri-is-not-defined-inside-javascript-class/m-p/721055#M66916</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;whether working with a class or not, you can't make calls to our API until you have checked to ensure that it has been downloaded and initialized.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;you might want to download the following custom &lt;/SPAN&gt;&lt;A href="http://help.arcgis.com/en/webapi/javascript/arcgis/jssamples/layers_point_clustering.html"&gt;Point Clustering&lt;/A&gt;&lt;SPAN&gt; sample to see an example of the implementation of a javascript class.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 11 Mar 2013 14:56:20 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/esri-is-not-defined-inside-javascript-class/m-p/721055#M66916</guid>
      <dc:creator>JohnGravois</dc:creator>
      <dc:date>2013-03-11T14:56:20Z</dc:date>
    </item>
    <item>
      <title>Re: esri is not defined inside JavaScript class</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/esri-is-not-defined-inside-javascript-class/m-p/721056#M66917</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;&lt;BR /&gt;the init is called, but when entering the function dojo.ready(initMap()); FireBug gives me a ReferenceError: esri is not defined (this.map = new esri.Map("map",{.....)&lt;BR /&gt;&lt;BR /&gt;How can I make this work?&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Change:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
dojo.ready(initMap())
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;To:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
dojo.ready(initMap)
&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;When you pass initMap() to dojo.ready, you're passing the return value of the initMap function instead of the initMap function itself. You want initMap to run when dojo.ready runs (this ensures esri.Map has been loaded), not before, which is what is probably happening with the current version of your code.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 06:50:49 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/esri-is-not-defined-inside-javascript-class/m-p/721056#M66917</guid>
      <dc:creator>derekswingley1</dc:creator>
      <dc:date>2021-12-12T06:50:49Z</dc:date>
    </item>
    <item>
      <title>Re: esri is not defined inside JavaScript class</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/esri-is-not-defined-inside-javascript-class/m-p/721057#M66918</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Okay, if I do what Mr. Swingley suggest, my firebug fire the TypeError: node is null&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;in the index.html :&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;&amp;lt;script type="text/javascript"&amp;gt;
&amp;nbsp;&amp;nbsp; dojo.require("esri.map");
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; oData = {
&amp;nbsp;&amp;nbsp;&amp;nbsp; "nom":"Coaticook",
&amp;nbsp;&amp;nbsp;&amp;nbsp; "extent":
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "xmin": -8007750,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "ymin": 5622181,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "xmax": -7978153,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "ymax": 5647140
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; };
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var oMapper = new Mapper(oData);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oMapper.init();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.ready(oMapper.initMap);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp; &amp;lt;/script&amp;gt;&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;in the mapper class :&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;function Mapper(oData)
{
 this.map;
 this.div_map;
 this.init = init;
 this.builDivs = buildDivs;
 this.oData = oData;
 this.initMap = initMap;
 
 function init() 
 {
&amp;nbsp; buildDivs();
 }
 
 function buildDivs()
 {
&amp;nbsp; this.div_map = $('&amp;lt;div id="map"&amp;gt;&amp;lt;/div&amp;gt;');
&amp;nbsp; $('#main').append(this.div_map);
 }
 
 function initMap()
 {
&amp;nbsp; var initialExtent = new esri.geometry.Extent({
&amp;nbsp;&amp;nbsp; 'xmin': oData.extent.xmin,
&amp;nbsp;&amp;nbsp; 'ymin': oData.extent.ymin,
&amp;nbsp;&amp;nbsp; 'xmax': oData.extent.xmax,
&amp;nbsp;&amp;nbsp; 'ymax': oData.extent.ymax,
&amp;nbsp;&amp;nbsp; 'spatialReference': new esri.SpatialReference({ wkid: 102100 })
&amp;nbsp; });
&amp;nbsp; 
&amp;nbsp; this.map = new esri.Map("map",
&amp;nbsp; {
&amp;nbsp;&amp;nbsp; basemap:"topo",
&amp;nbsp;&amp;nbsp; extent: initialExtent,
&amp;nbsp;&amp;nbsp; "fadeOnZoom": true,
&amp;nbsp;&amp;nbsp; logo: true,
&amp;nbsp;&amp;nbsp; showAttribution: false
&amp;nbsp; });
 }
}&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;If i take the suggestion of Mr. Jgravois, it doesn't seem to be a javascript OOP.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;BUT with some workaround of my original code, it works.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;index.html :&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
&amp;lt;script type="text/javascript"&amp;gt;
&amp;nbsp;&amp;nbsp; dojo.require("esri.map");
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp; oData = {
&amp;nbsp;&amp;nbsp;&amp;nbsp; "nom":"Coaticook",
&amp;nbsp;&amp;nbsp;&amp;nbsp; "extent":
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "xmin": -8007750,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "ymin": 5622181,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "xmax": -7978153,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "ymax": 5647140
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; };
&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dojo.ready(function()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var oMapper = new Mapper(oData);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oMapper.init();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; oMapper.initMap();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; });
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp; &amp;lt;/script&amp;gt;
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;mapper class :&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
function Mapper(oData)
{
 this.map;
 this.div_map;
 this.init = init;
 this.builDivs = buildDivs;
 this.oData = oData;
 this.initMap = initMap;
 
 function init() 
 {
&amp;nbsp; buildDivs();
 }
 
 function buildDivs()
 {
&amp;nbsp; this.div_map = $('&amp;lt;div id="map"&amp;gt;&amp;lt;/div&amp;gt;');
&amp;nbsp; $('#main').append(this.div_map);
 }
 
 function initMap()
 {
&amp;nbsp; var initialExtent = new esri.geometry.Extent({
&amp;nbsp;&amp;nbsp; 'xmin': oData.extent.xmin,
&amp;nbsp;&amp;nbsp; 'ymin': oData.extent.ymin,
&amp;nbsp;&amp;nbsp; 'xmax': oData.extent.xmax,
&amp;nbsp;&amp;nbsp; 'ymax': oData.extent.ymax,
&amp;nbsp;&amp;nbsp; 'spatialReference': new esri.SpatialReference({ wkid: 102100 })
&amp;nbsp; });
&amp;nbsp; 
&amp;nbsp; this.map = new esri.Map("map",
&amp;nbsp; {
&amp;nbsp;&amp;nbsp; basemap:"topo",
&amp;nbsp;&amp;nbsp; extent: initialExtent,
&amp;nbsp;&amp;nbsp; "fadeOnZoom": true,
&amp;nbsp;&amp;nbsp; logo: true,
&amp;nbsp;&amp;nbsp; showAttribution: false
&amp;nbsp; });
 }
}
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 06:50:52 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/esri-is-not-defined-inside-javascript-class/m-p/721057#M66918</guid>
      <dc:creator>YvanBérard</dc:creator>
      <dc:date>2021-12-12T06:50:52Z</dc:date>
    </item>
  </channel>
</rss>

