function init(){
esri.config.defaults.geometryService = new esri.tasks.GeometryService("http://fwb-gissrv/ArcGIS/rest/services/Geometry/GeometryServer");
//create popup for multiple popups
var popup = new esri.dijit.Popup({
fillSymbol: new esri.symbol.SimpleFillSymbol(esri.symbol.SimpleFillSymbol.STYLE_SOLID, new esri.symbol.SimpleLineSymbol(esri.symbol.SimpleLineSymbol.STYLE_SOLID, new dojo.Color([255, 0, 0]), 2), new dojo.Color([240, 128, 128, 0.25]))
}, dojo.create("div"));
//map.spatialReference = new esri.SpatialReference({wkid:102100});
//set initial extent
var initExtent = new esri.geometry.Extent(-9651200, 3555500, -9636400, 3562470, new esri.SpatialReference({
"wkid": 102100
}));
locator = new esri.tasks.Locator("http://fwb-gissrv/ArcGIS/rest/services/GeoCodes/AddressessFWB/GeocodeServer");
dojo.connect(locator, "onAddressToLocationsComplete", showResultsl);
//load map
map = new esri.Map("map", {
extent: initExtent,
slider: true,
lods: lods,
infoWindow: popup
});
//add basemap gallery tiles
createBasemapGallery();
dojo.connect(basemapGallery, "onError", function(msg){
console.log(msg)
});
dojo.xhrGet({
url: "Config.json",
handleAs: "json",
preventCache: true,
load: function(responseObject, ioArgs){
layrname = responseObject.Lyrname;
//add layers from config file
if (layrname.length != 0) {
for (var i = 0; i < layrname.length; i++) {
layname = (layrname.lname);
laytitle = (layrname.ltitle);
layurl = (layrname.lUrl);
layrvis = (layrname.lVisb);
layid = (layrname.lyid);
layname = new esri.layers.ArcGISDynamicMapServiceLayer(layurl, {
id: layid,
visible: layrvis
});
legendLayers.push({
layer: layname,
title: laytitle
});
layrnames.push({
layern: layname
});
map.addLayer(layname);
}
};
dojo.connect(map, 'onLayeraddResult', function(results){
var legend = new esri.dijit.Legend({
map: map,
layerInfos: legendLayers
}, "legendDiv");
legend.startup();
});
//map.addLayers([layname]);
dojo.connect(map, 'onLayerAddResult', function(results){
//add check boxes
dojo.forEach(legendLayers, function(layer){
var layerName = layer.title;
var checkBox = new dijit.form.CheckBox({
name: "checkBox" + layer.layer.id,
value: layer.layer.id,
checked: layer.layer.visible,
onChange: function(evt){
var clayer = map.getLayer(this.value);
clayer.setVisibility(!clayer.visible);
this.checked = clayer.visible;
legend.refresh();
}
});
//add the check box and label to the toc
dojo.place(checkBox.domNode, dojo.byId("toggle"), "after");
var checkLabel = dojo.create('label', {
'for': checkBox.name,
innerHTML: layerName
}, checkBox.domNode, "after");
dojo.place("<br />", checkLabel, "after");
});
});
}
});
Solved! Go to Solution.
var layersDynamic = [{ url: 'http://server/ArcGIS/rest/services/Flood/MapServer', token: true, name: 'Flood', id: 'flood', visible: false, opacity: 1, imageFormat: 'png24', dpi: 96, }, { url: 'http://server/ArcGIS/rest/services/MunicipalBoundaries/MapServer', token: true, name: 'Municipal Boundaries', id: 'mboundaries', visible: true, opacity: 1, imageFormat: 'png24', dpi: 96, }];
dojo.forEach(layersDynamic, function(l) { addDynamic(l) });
function addDynamic(l) { var url; if (l.token == true) { url = l.url + '?token=' + //TOKEN OR TOKEN VARIABLE HERE// } else { url = l.url } var layer = new esri.layers.ArcGISDynamicMapServiceLayer(url, { id: l.id, visible: l.visible, opacity: l.opacity }); layer.setImageFormat(l.imageFormat); //implicitly set - doesn't always work if added to layer object params layer.setDPI(l.dpi); //implicitly set - doesn't always work if added to layer object params var control = '<div id="' + l.id + '_layer_control"><input id="' + l.id + '_control_cb" /> ' + l.name + '<div>'; dojo.place(control, 'toc', 'first'); var checkbox = new dijit.form.CheckBox({ checked: l.visible, onChange: function () { if (layer.visible == true) { layer.hide() } else { layer.show() } } }, l.id + '_control_cb'); map.addLayer(layer); //last }
{
'Lyrname' :
[
{"lname": "parcelsLayer", "ltitle": "Parcels", "lUrl": "http://fwb-gissrv/ArcGIS/rest/services/Maps/Parcels/MapServer", "lVisb": "false", "lyid": "parcelsaa"},
{"lname": "parcelsarLayer", "ltitle": "Parcels Aerial", "lUrl": "http://fwb-gissrv/ArcGIS/rest/services/Maps/ParcelsAerial/MapServer", "lVisb": "true", "lyid": "parcelsab"},
{"lname": "hydroLayer", "ltitle": "Hydrography", "lUrl": "http://fwb-gissrv/ArcGIS/rest/services/Maps/Hydrography/MapServer", "lVisb": "true", "lyid": "hydro"},
{"lname": "bfpLayer", "ltitle": "Building Footprints", "lUrl": "http://fwb-gissrv/ArcGIS/rest/services/Maps/BFP/MapServer", "lVisb": "true", "lyid": "bfpa"}
]
}
var config = { token: 'some_token', tools: [ { name: 'Measure', widget: 'bowc.widget.Measure', placeAt: 'new floating pane', placeControls: ['toolbar','mapContext'] } ], layersDynamic: [ { url: 'http://server/ArcGIS/rest/services/Flood/MapServer', token: true, name: 'Flood', id: 'flood', visible: false, opacity: 1, imageFormat: 'png24', dpi: 96, legend: true, parcelLabelControl: false, subLayerControl: true, identify: true, identifyLayers: ['*'], info: true, infoHtml: 'This layer displays the FEMA flood zones.' }, { url: 'http://server/ArcGIS/rest/services/MunicipalBoundaries/MapServer', token: true, name: 'Municipal Boundaries', id: 'mboundaries', visible: true, opacity: 1, imageFormat: 'png24', dpi: 96, legend: true, parcelLabelControl: false, subLayerControl: true, identify: false, identifyLayers: undefined, info: true, infoHtml: 'This layer displays city limits and the urban growth boundary (UGB).' } ], layersFeature: [ ] }
dojo.forEach(config.layersDynamic, function(l) { app.layers.addDynamic(l) });
var app = { layers: { addDynamic: function (l) { var url; if (l.token == true) { url = l.url + '?token=' + token } else { url = l.url } var layer = new esri.layers.ArcGISDynamicMapServiceLayer(url, { id: l.id, visible: l.visible, opacity: l.opacity }); layer.setImageFormat(l.imageFormat); //implicitly set - doesn't always work if added to layer object params layer.setDPI(l.dpi); //implicitly set - doesn't always work if added to layer object params var control = '<div id="' + l.id + '_layer_control"><input id="' + l.id + '_control_cb" /> ' + l.name + '  <img id="' + l.id + '_update" src="images/updating.gif" style="display:none; width:14px; height:14px;" /><div>' dojo.place(control, 'toc', 'first'); var checkbox = new dijit.form.CheckBox({ checked: l.visible, onChange: function () { if (layer.visible == true) { layer.hide() } else { layer.show() } } }, l.id + '_control_cb'); dojo.connect(layer, 'onUpdateStart', function (evt) { dojo.style(l.id + '_update', 'display', 'inline') }); dojo.connect(layer, 'onUpdateEnd', function (evt) { dojo.style(l.id + '_update', 'display', 'none') }); if (l.legend == true) { //add to legend } app.map.addLayer(layer); //last } } }
var layersDynamic = [{ url: 'http://server/ArcGIS/rest/services/Flood/MapServer', token: true, name: 'Flood', id: 'flood', visible: false, opacity: 1, imageFormat: 'png24', dpi: 96, }, { url: 'http://server/ArcGIS/rest/services/MunicipalBoundaries/MapServer', token: true, name: 'Municipal Boundaries', id: 'mboundaries', visible: true, opacity: 1, imageFormat: 'png24', dpi: 96, }];
dojo.forEach(layersDynamic, function(l) { addDynamic(l) });
function addDynamic(l) { var url; if (l.token == true) { url = l.url + '?token=' + //TOKEN OR TOKEN VARIABLE HERE// } else { url = l.url } var layer = new esri.layers.ArcGISDynamicMapServiceLayer(url, { id: l.id, visible: l.visible, opacity: l.opacity }); layer.setImageFormat(l.imageFormat); //implicitly set - doesn't always work if added to layer object params layer.setDPI(l.dpi); //implicitly set - doesn't always work if added to layer object params var control = '<div id="' + l.id + '_layer_control"><input id="' + l.id + '_control_cb" /> ' + l.name + '<div>'; dojo.place(control, 'toc', 'first'); var checkbox = new dijit.form.CheckBox({ checked: l.visible, onChange: function () { if (layer.visible == true) { layer.hide() } else { layer.show() } } }, l.id + '_control_cb'); map.addLayer(layer); //last }