Thank you, Kelly. That worked, only after adding a <div id="basemapPane"> to my TitlePane.
Barry,The TitlePane widget has a toggle method you can use to close the panel after selecting a basemap. Here's a snippet that shows how this would work: basemapGallery.startup(); dojo.connect(basemapGallery,'onSelectionChange', function(){ //close the title pane var bp = dijit.byId('basemapPane'); bp.toggle(); }); dojo.connect(basemapGallery, "onError", function(msg) {console.log(msg)});
basemapGallery.startup(); dojo.connect(basemapGallery,'onSelectionChange', function(){ //close the title pane var bp = dijit.byId('basemapPane'); bp.toggle(); }); dojo.connect(basemapGallery, "onError", function(msg) {console.log(msg)});
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" /> <!--The viewport meta tag is used to improve the presentation and behavior of the samples on iOS devices--> <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/> <title>Topographic Map</title> <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.1/js/dojo/dijit/themes/claro/claro.css"> <style> html, body { height: 100%; width: 100%; margin: 0; padding: 0; } .esriScalebar{ padding: 20px 20px; } #map{ padding:0; } </style> <script type="text/javascript">var djConfig = {parseOnLoad: true};</script> <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=3.1"></script> <script type="text/javascript"> dojo.require("dijit.layout.BorderContainer"); dojo.require("dijit.layout.ContentPane"); dojo.require("esri.dijit.BasemapGallery"); dojo.require("dijit.form.Button"); dojo.require("dijit.Menu"); dojo.require("esri.map"); var map; function init() { var initExtent = new esri.geometry.Extent({"xmin":-122.46,"ymin":37.73,"xmax":-122.36,"ymax":37.77,"spatialReference":{"wkid":4326}}); map = new esri.Map("map",{ extent:esri.geometry.geographicToWebMercator(initExtent) }); //Add the topographic layer to the map. View the ArcGIS Online site for services http://arcgisonline/home/search.html?t=content&f=typekeywords:service var basemap = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer"); map.addLayer(basemap); dojo.connect(map, 'onLoad', function(theMap) { //resize the map when the browser resizes dojo.connect(dijit.byId('map'), 'resize', map,map.resize); createBasemapGallery(); }); } function createBasemapGallery() { basemapGallery = new esri.dijit.BasemapGallery({ showArcGISBasemaps: true, map: map }); dojo.connect(basemapGallery, 'onLoad', function () { //BasemapGallery.startup isn't needed because we aren't using the default basemap, instead dojo.forEach(basemapGallery.basemaps, function (basemap) { //Add a menu item for each basemap, when the menu items are selected dijit.byId('basemapMenu').addChild(new dijit.MenuItem({ label: basemap.title, onClick: dojo.hitch(this, function () { this.basemapGallery.select(basemap.id); }) })); }); }); } dojo.addOnLoad(init); </script> </head> <body class="claro"> <div dojotype="dijit.layout.BorderContainer" design="headline" gutters="false" style="width: 100%; height: 100%; margin: 0;"> <div id="map" dojotype="dijit.layout.ContentPane" region="center" style="border:1px solid #000;padding:0;"> <div style="position:absolute; right:65px; top:10px; z-Index:99;"> <button id="dropdownButton" baseClass='medium button green' iconClass="basemapIcon" label="Basemaps" dojoType="dijit.form.DropDownButton"> <div dojoType="dijit.Menu" id="basemapMenu"> <!--The menu items are dynamically created using the basemap gallery layers--> </div> </button> </div> </div> </div> </body> </html>
It should be built into the sample. My button from the sample does collapse after I make a selection. If I select the Basemaps button, but then do nothing, it will stay open until I click anywhere in the window.
dojo.connect(bookmarks, 'onClick', function(evt) { dojo.query('.dijitDropDownButton').forEach(function(node,idx){ var btn = dijit.getEnclosingWidget(node); btn.closeDropDown(); }); });
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" /> <!--The viewport meta tag is used to improve the presentation and behavior of the samples on iOS devices--> <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no" /> <title>Topographic Map</title> <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/2.7/js/dojo/dijit/themes/claro/claro.css"> <style> html, body { height: 100%; width: 100%; margin: 0; padding: 0; } .esriScalebar { padding: 20px 20px; } #map { padding:0; } </style> <script type="text/javascript"> var djConfig = { parseOnLoad: true }; </script> <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=2.7"></script> <script type="text/javascript"> dojo.require("dijit.layout.BorderContainer"); dojo.require("dijit.layout.ContentPane"); dojo.require("esri.map"); dojo.require("esri.dijit.BasemapGallery"); dojo.require("dijit.Menu"); dojo.require("dijit.form.Button"); var map; var basemapGallery; function init() { var initExtent = new esri.geometry.Extent({ "xmin": -75.50, "ymin": 39.84, "xmax": -74.67, "ymax": 40.14, "spatialReference": { "wkid": 4326 } }); map = new esri.Map("map", { extent: esri.geometry.geographicToWebMercator(initExtent) }); dojo.connect(map, 'onLoad', function () { //create the basemap gallery dropdown createBasemapGallery(); //resize the map when the browser resizes dojo.connect(dijit.byId('map'), 'resize', map, map.resize); }); //Add the topographic layer to the map. View the ArcGIS Online site for services http://arcgisonline/home/search.html?t=content&f=typekeywords:service var basemap = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer"); map.addLayer(basemap); //add dynamic layers var imageParameters = new esri.layers.ImageParameters(); imageParameters.layerIds = [6]; imageParameters.layerOption = esri.layers.ImageParameters.LAYER_OPTION_SHOW; var cii = new esri.layers.ArcGISDynamicMapServiceLayer("http://gis.dvrpc.org/ArcGIS/rest/services/Ci2_raster/MapServer", { id: "cii", "imageParameters": imageParameters, "opacity": 1.00 }); map.addLayer(cii); var admin = new esri.layers.ArcGISDynamicMapServiceLayer("http://gis.dvrpc.org/ArcGIS/rest/services/Ci2_raster/MapServer", { id: "admin", visible: true, "opacity": 0.80 }); map.addLayer(admin); admin.setVisibleLayers([0, 1, 2]); var transmap = new esri.layers.ArcGISDynamicMapServiceLayer("http://gis.dvrpc.org/ArcGIS/rest/services/Ci2_raster/MapServer", { id: "transmap", visible: true, "opacity": 1.00 }); map.addLayer(transmap); transmap.setVisibleLayers([3, 4, 5]); } function createBasemapGallery() { basemapGallery = new esri.dijit.BasemapGallery({ showArcGISBasemaps: true, map: map }); dojo.connect(basemapGallery, 'onLoad', function () { //add the basemaps to the menu dojo.forEach(basemapGallery.basemaps, function (basemap) { dijit.byId("basemapMenu").addChild(new dijit.MenuItem({ label: basemap.title, onClick: dojo.hitch(this, function () { this.basemapGallery.select(basemap.id); }) })); }); }); } dojo.addOnLoad(init); </script> </head> <body class="claro"> <div dojotype="dijit.layout.BorderContainer" design="headline" gutters="false" style="width: 100%; height: 100%; margin: 0;"> <div id="map" dojotype="dijit.layout.ContentPane" region="center" style="border:1px solid #000;padding:0;"> <!-- basemap dropdown --> <div style="position:absolute; right:50px; top:10px; z-Index:99;"> <button id="dropdownButton" iconClass="bingIcon" label="Basemaps" dojoType="dijit.form.DropDownButton"> <div dojoType="dijit.Menu" id="basemapMenu"> <!--The menu items are dynamically created using the basemap gallery layers--> </div> </button> </div> </div> </div> </body> </html>
function init() { // DVRPC region initExtent = new esri.geometry.Extent({"xmin":-8502778.91,"ymin":4784652.06,"xmax":-8227605.61,"ymax":4968100.93,"spatialReference":{"wkid":102100}}); initExtent = new esri.geometry.Extent({"xmin":-8513951.985121,"ymin":4786968.660565,"xmax":-8248256.864588,"ymax":4996406.126118,"spatialReference":{"wkid":102100}}); //setup the popup window var popup = new esri.dijit.Popup({marginTop:35, 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([255,255,0,0.25])) }, dojo.create("div")); map = new esri.Map("map",{ infoWindow:popup, extent:initExtent }); dojo.connect(map,"onLoad",mapReady); // imagemap = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"); // map.addLayer(imagemap); basemap = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Base/MapServer"); map.addLayer(basemap); refmap = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/Canvas/World_Light_Gray_Reference/MapServer"); map.addLayer(refmap); var imageParameters = new esri.layers.ImageParameters(); imageParameters.layerIds = [6]; imageParameters.layerOption = esri.layers.ImageParameters.LAYER_OPTION_SHOW; cii = new esri.layers.ArcGISDynamicMapServiceLayer("http://gis.dvrpc.org/ArcGIS/rest/services/Ci2_raster/MapServer",{id:"cii", "imageParameters": imageParameters, "opacity":1.00}); map.addLayer(cii); admin = new esri.layers.ArcGISDynamicMapServiceLayer("http://gis.dvrpc.org/ArcGIS/rest/services/Ci2_raster/MapServer",{id:"admin", visible:true,"opacity":0.80}); map.addLayer(admin); admin.setVisibleLayers([0,1,2]); transmap = new esri.layers.ArcGISDynamicMapServiceLayer("http://gis.dvrpc.org/ArcGIS/rest/services/Ci2_raster/MapServer",{id:"transmap", visible:true,"opacity":1.00}); map.addLayer(transmap); transmap.setVisibleLayers([3,4,5]); }
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" /> <!--The viewport meta tag is used to improve the presentation and behavior of the samples on iOS devices--> <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no" /> <title> Basemap Gallery - Bing Maps </title> <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/2.6/js/dojo/dijit/themes/claro/claro.css"> <style type="text/css"> html,body { height:100%; width:100%; margin:0; padding:0; } body { background-color:#feffff; overflow:hidden; font-family:"Trebuchet MS"; margin:2%; } #map { -moz-border-radius:4px; overflow:hidden; border:solid 2px #03c; } .claro .dijitButtonText { color:#03c; font-family: Arial, Helvetica, sans-serif font-weight:bold; } .claro td.dijitMenuItemLabel { color:#03c; font-family: Arial, Helvetica, sans-serif font-weight:500; } </style> <script type="text/javascript"> var djConfig = { parseOnLoad: true }; </script> <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=2.6"> </script> <script type="text/javascript"> dojo.require("dijit.dijit"); // optimize: load dijit layer dojo.require("dijit.layout.BorderContainer"); dojo.require("dijit.layout.ContentPane"); dojo.require("esri.map"); dojo.require("esri.dijit.BasemapGallery"); dojo.require("dijit.Tooltip"); dojo.require("dijit.form.Button"); dojo.require("dijit.Menu"); var map, basemapGallery; function init() { var initialExtent = new esri.geometry.Extent({ "xmin": -1641867, "ymin": 2647172, "xmax": 3064207, "ymax": 4765395, "spatialReference": { "wkid": 102113 } }); map = new esri.Map("map", { extent: initialExtent }); createBasemapGallery(); dojo.connect(map, 'onLoad', function(map) { //resize the map when the browser resizes dojo.connect(dijit.byId('map'), 'resize', map,map.resize); }); } function createBasemapGallery(){ //Manually create a list of basemaps to display var basemaps = []; var oceanLayer = new esri.dijit.BasemapLayer({ url: "http://server.arcgisonline.com/ArcGIS/rest/services/Ocean_Basemap/MapServer" }); var oceansBasemap = new esri.dijit.Basemap({ layers:[oceanLayer], title:"World Oceans" }); basemaps.push(oceansBasemap); var basemapImagery = new esri.dijit.Basemap({ layers: [new esri.dijit.BasemapLayer({ url: "http://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer" })], id: "bmImagery", title: "Imagery" }); basemaps.push(basemapImagery); var natGeoLayer = new esri.dijit.BasemapLayer({ url:"http://server.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer" }); var natGeoBasemap = new esri.dijit.Basemap({ layers:[natGeoLayer], title:"National Geographic" }); basemaps.push(natGeoBasemap); basemapGallery = new esri.dijit.BasemapGallery({ showArcGISBasemaps: false, basemaps: basemaps, map: map }); //BasemapGallery.startup isn't needed because we aren't using the default basemap, instead //we are going to create a custom user interface to display the basemaps, in this case a menu. dojo.forEach(basemapGallery.basemaps, function(basemap) { //Add a menu item for each basemap, when the menu items are selected dijit.byId("bingMenu").addChild(new dijit.MenuItem({ label: basemap.title, onClick: dojo.hitch(this, function() { this.basemapGallery.select(basemap.id); }) })); }); } //show map on load dojo.addOnLoad(init); </script> </head> <body class="claro"> <div dojotype="dijit.layout.BorderContainer" design="headline" gutters="false" style="width: 95%; height: 94%;"> <div id="map" dojotype="dijit.layout.ContentPane" region="center"> <div style="position:absolute; right:50px; top:10px; z-Index:99;"> <button id="dropdownButton" label="Basemaps" dojoType="dijit.form.DropDownButton"> <div dojoType="dijit.Menu" id="bingMenu"> <!--The menu items are dynamically created using the basemap gallery layers--> </div> </button> </div> </div> </div> </body> </html>
//Manually create a list of basemaps to display var basemaps = []; var oceanLayer = new esri.dijit.BasemapLayer({ url: "http://server.arcgisonline.com/ArcGIS/rest/services/Ocean_Basemap/MapServer" }); var oceansBasemap = new esri.dijit.Basemap({ layers:[oceanLayer], title:"World Oceans", thumbnailUrl:"http://www.arcgis.com/sharing/content/items/2adf08a4a1a84834a773805a6e86f69e/info/thumbnail/oceans.jpg" }); basemaps.push(oceansBasemap); var natGeoLayer = new esri.dijit.BasemapLayer({ url:"http://server.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer" }); var natGeoBasemap = new esri.dijit.Basemap({ layers:[natGeoLayer], title:"National Geographic", thumbnailUrl:"http://www.arcgis.com/sharing/content/items/b9b1b422198944fbbd5250b3241691b6/info/thumbnail/natgeo3.jpg" }); basemaps.push(natGeoBasemap); basemapGallery = new esri.dijit.BasemapGallery({ showArcGISBasemaps: false, basemaps: basemaps, map: map });
var basemapGallery = new esri.dijit.BasemapGallery({ showArcGISBasemaps: true, basemapsGroup:{owner:"esri",title:"Community Basemaps"}, map: map }, dojo.create('div'));
Angemeldete Mitglieder können Beiträge verfassen, Updates folgen und mehr. Neu hier? Registriere ein kostenloses Konto.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.