map.addLayer(graphicsLayer1);
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Multiple Graphics Layers</title> <!-- ESRI Required --> <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.4/js/esri/css/esri.css" /> <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.4/js/dojo/dijit/themes/tundra/tundra.css"/> <script type="text/javascript">var dojoConfig = { parseOnLoad: true };</script> <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/3.4"></script> <script type="text/javascript"> dojo.require("esri.map"); dojo.require("esri.layers.graphics"); var map; var streetsUrl = "http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"; function init() { //alert("testing"); var initExtent = new esri.geometry.Extent({ "xmin": -13056017.708638752, "ymin": 4028145.398141955, "xmax": -13030946.363361249, "ymax": 4042916.8538580453, "spatialReference": { "wkid": 102100 } }); map = new esri.Map("map"); // In IE listen for onLayerAddResult dojo.connect(map, "onLayerAddResult", mapAddLayerResult); dojo.connect(map, "onLoad", mapLoaded); var layer0 = new esri.layers.ArcGISTiledMapServiceLayer(streetsUrl, { "id": "Streets", "opacity": 1.0, "visible" : true }); var BASE_MAP_ARRAY = [layer0]; map.addLayers(BASE_MAP_ARRAY); }; function mapLoaded(theMap) { logMessage("map loaded"); var graphicsLayer1 = new esri.layers.GraphicsLayer({ "id" : "graphicsLayer1" }); var graphicsLayer2 = new esri.layers.GraphicsLayer({ "id" : "graphicsLayer2" }); var graphicsLayer3 = new esri.layers.GraphicsLayer({ "id" : "graphicsLayer3" }); logMessage("Map loaded? " + theMap.loaded); map.addLayer(graphicsLayer1); map.addLayer(graphicsLayer2); map.addLayer(graphicsLayer3); var oldGraphicsLayer = map.getLayer("graphicsLayer3"); logMessage("graphics layer 3: " + oldGraphicsLayer); }; function mapAddLayerResult(layer, error) { logMessage("map says layer is loaded. Layer: " + layer + ". Error: " + error + ". Tile Info LODs Length: " + layer.tileInfo.lods.length); }; function logMessage(message) { // Check for a console object var console = window['console']; // Log a message if a log property is available //--------------------------------------------- if (console && console.log) { console.log(message); } } dojo.addOnLoad(init); </script> <style type="text/css"> body { font-size: 100%; font-family: Verdana; } #map { height: 600px; width: 800px; margin: 50px auto; border: 3px solid black; } </style> </head> <body> <div id="map"> </div> </body> </html>
Solved! Go to Solution.
logMessage("map says layer is loaded. Layer: " + layer + ". Error: " + error + ". Tile Info LODs Length: " + layer.tileInfo.lods.length);
logMessage("map says layer is loaded. Layer: " + layer + ". Error: " + error + ". Tile Info LODs Length: " + layer.tileInfo.lods.length);
This:logMessage("map says layer is loaded. Layer: " + layer + ". Error: " + error + ". Tile Info LODs Length: " + layer.tileInfo.lods.length);
Specifically the layer.tileInfo.lods.length part is what's breaking your page. mapAddLayerResult fires each time a layer is added so it's called each time you add a graphics layer. Since graphics layers don't have a tileInfo property, your code is breaking.