Select to view content in your preferred language

Syntax for putting my lods into a separate file

2895
3
Jump to solution
08-21-2015 08:45 AM
TracySchloss
Honored Contributor

I need to explicitly set my lods to control the max and min for my map.  I'd like to have these stored in a separate file like lods.js and then just reference it.  I'm not sure of the syntax for the file and I'm not sure how to reference it.

0 Kudos
1 Solution

Accepted Solutions
KenBuja
MVP Esteemed Contributor

I have lods set up in a configuration file (projectA.js) like this

define([], function () {
    return {
        //other parameters
        lods: [
            { "level": 0, "scale": 144447.638572, "resolution": 38.2185141425366 },
            { "level": 1, "scale": 72223.819286, "resolution": 19.1092570712683 },
            { "level": 2, "scale": 36111.909643, "resolution": 9.55462853563415 },
            { "level": 3, "scale": 18055.954822, "resolution": 4.77731426794937 },
            { "level": 4, "scale": 9027.977411, "resolution": 2.38865713397468 },
            { "level": 5, "scale": 4513.988705, "resolution": 1.19432856685505 },
            { "level": 6, "scale": 2256.994353, "resolution": 0.597164283559817 },
            { "level": 7, "scale": 1128.497176, "resolution": 0.298582141647617 }
        ],
        //more parameters
    };
});

This is stored in "modules/projects", so I use the require statement

require(["modules/projects/projectA", function (parameters) {

to use them like this

map = new Map("divMap", {
    basemap: parameters.basemap,
    lods: parameters.lods,
    logo: false,
    showAttribution: false
});

View solution in original post

3 Replies
KenBuja
MVP Esteemed Contributor

I have lods set up in a configuration file (projectA.js) like this

define([], function () {
    return {
        //other parameters
        lods: [
            { "level": 0, "scale": 144447.638572, "resolution": 38.2185141425366 },
            { "level": 1, "scale": 72223.819286, "resolution": 19.1092570712683 },
            { "level": 2, "scale": 36111.909643, "resolution": 9.55462853563415 },
            { "level": 3, "scale": 18055.954822, "resolution": 4.77731426794937 },
            { "level": 4, "scale": 9027.977411, "resolution": 2.38865713397468 },
            { "level": 5, "scale": 4513.988705, "resolution": 1.19432856685505 },
            { "level": 6, "scale": 2256.994353, "resolution": 0.597164283559817 },
            { "level": 7, "scale": 1128.497176, "resolution": 0.298582141647617 }
        ],
        //more parameters
    };
});

This is stored in "modules/projects", so I use the require statement

require(["modules/projects/projectA", function (parameters) {

to use them like this

map = new Map("divMap", {
    basemap: parameters.basemap,
    lods: parameters.lods,
    logo: false,
    showAttribution: false
});
SteveCole
Honored Contributor

I haven't worked with LODs myself but they're essentially a pure JS multi-dimensional array so you could just place that into a standalone JS file and load it into your project like any other JS traditional JS file. Your lods.js file would be:

  var lods = [
    {"level" : 0, "resolution" : 0.010986328125, "scale" : 4617149.97766929},
    {"level" : 1, "resolution" : 0.0054931640625, "scale" : 2308574.98883465},
    {"level" : 2, "resolution" : 0.00274658203125, "scale" : 1154287.49441732},
    {"level" : 3, "resolution" : 0.001373291015625, "scale" : 577143.747208662},
    {"level" : 4, "resolution" : 0.0006866455078125, "scale" : 288571.873604331}
  ];

Now load it anytime before your JS file which constructs the map:

<script type="text/javascript" src="js/lods.js"></script>
<script src="http://js.arcgis.com/3.14/"></script>

So long as the variable has a global scope, you could then refer to it during your map construction:

  var map = new Map("map", {
    lods: lods
  });

EDIT: Ken beat me to the punch. His idea is probably better.

TracySchloss
Honored Contributor

I think both are helpful.  I'm not sure whether one methodology is more efficient or faster than the other.  It seem like you a few extra lines if you put it in as a module.  On the other hand, it ends up getting called the same as the other modules in my js folder, so I'm less likely to lose track of how I'm calling it. 

0 Kudos