I have, but it results in some funny behavior, which I'm sure has to do with the spatial reference... I am just unsure how to manipulate the extent from web mercator to UTM. function init() { /* Set Extent and Create Map Constructor */ var extent = new esri.geometry.Extent({ "xmin": -75.35, "ymin": 41.6, "xmax": -74.06, "ymax": 42.75, "spatialReference": { "wkid": 4269 } }); map = new esri.Map("map", { extent: esri.geometry.geographicToWebMercator(extent) }); /* Add Basemap */ var basemapUrl = "http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"; var basemapInitial = new esri.layers.ArcGISTiledMapServiceLayer(basemapUrl); map.addLayer(basemapInitial); /* AA - Create Basemap Gallery */ createBasemapGallery(); ... /* AA */ function createBasemapGallery(){ /* ESRI World Street Map */ var layerStreet = new esri.dijit.BasemapLayer({ url:"http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" }); var basemapStreet = new esri.dijit.Basemap({ layers: [layerStreet], title: "ESRI Street Map" }); basemaps.push(basemapStreet); /* New Basemap */ var newBaselayer = new esri.dijit.BasemapLayer({ url:"http://host/ArcGIS/rest/services/myservice/MapServer", visibleLayers:[2] }); var newBasemap = new esri.dijit.Basemap({ layers: [newBaselayer], title: "Other Basemap" }); basemaps.push(newBasemap); /* Create Gallery and Populate Drop Down Menu */ basemapGallery = new esri.dijit.BasemapGallery({ showArcGISBasemaps: false, basemaps: basemaps, map: map }); 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); }) })); });So at first things are fine, and then when I switch base maps, the new (which is on a different map service and has a different spatial projection (UTM)) basemap zooms to the full extent, actually somewhat further out than that. If I then switch back to the ESRI world street map, it zooms me to a place in the Mediterranean Sea. Could anyone explain this behavior? Will I need to convert the units everytime my basemap changes?Thanks,DR
function init() { /* Set Extent and Create Map Constructor */ var extent = new esri.geometry.Extent({ "xmin": -75.35, "ymin": 41.6, "xmax": -74.06, "ymax": 42.75, "spatialReference": { "wkid": 4269 } }); map = new esri.Map("map", { extent: esri.geometry.geographicToWebMercator(extent) }); /* Add Basemap */ var basemapUrl = "http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"; var basemapInitial = new esri.layers.ArcGISTiledMapServiceLayer(basemapUrl); map.addLayer(basemapInitial); /* AA - Create Basemap Gallery */ createBasemapGallery(); ... /* AA */ function createBasemapGallery(){ /* ESRI World Street Map */ var layerStreet = new esri.dijit.BasemapLayer({ url:"http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" }); var basemapStreet = new esri.dijit.Basemap({ layers: [layerStreet], title: "ESRI Street Map" }); basemaps.push(basemapStreet); /* New Basemap */ var newBaselayer = new esri.dijit.BasemapLayer({ url:"http://host/ArcGIS/rest/services/myservice/MapServer", visibleLayers:[2] }); var newBasemap = new esri.dijit.Basemap({ layers: [newBaselayer], title: "Other Basemap" }); basemaps.push(newBasemap); /* Create Gallery and Populate Drop Down Menu */ basemapGallery = new esri.dijit.BasemapGallery({ showArcGISBasemaps: false, basemaps: basemaps, map: map }); 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); }) })); });
/* Set Extent and Create Map Constructor */ var extent = new esri.geometry.Extent({ "xmin": -75.35, "ymin": 41.6, "xmax": -74.06, "ymax": 42.75, "spatialReference": { wkid:4326 } }); map = new esri.Map("map", { extent: esri.geometry.geographicToWebMercator(extent) });
Greetings,I'm constructing a basemap gallery drop down menu button. I've left the default World Street Map as the initial basemap, and predefined an extent. This works when loaded.When I switch basemaps through the menu (using a different Map Service), I lose the defined extent, with the new basemap having its full extent. Anybody know how to fix this so I maintain the defined extent despite map service/basemap changes?Thanks,DR
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.