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 }