¿Agregar un mapa base personalizado en ArcGIS.Com que se puede usar en la API de Javascript?

8

Es posible agregar una capa como mapa base en ArcGIS.com marcando la casilla de verificación usar como capa base:

Usar como capa base

Pero cuando consumo el mapa usando:

var mapDeferred = esri.arcgis.utils.createMap("<guid>", "map", {
                mapOptions: {
                    slider: true,
                    nav: false
                }
            });

el mapa base no aparece, ¿hay alguna regla que defina qué contenido se puede usar como mapa base?

MathiasWestin
fuente
Una pregunta rápida, después de agregar el servicio web requerido como mapa base, ¿pudo personalizarlo y habilitar ventanas emergentes en él? De la misma manera que podemos hacerlo cuando agregamos un archivo de forma simple y luego habilitamos ventanas emergentes en él. Lo intenté, pero parece que si desea agregar un archivo de forma como mapa base, la función de habilitar ventana emergente ya no está disponible. Esta es la pregunta que publiqué
Sam007

Respuestas:

7

Sí, esto es definitivamente posible, aquí hay un ejemplo:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" />
    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/>
    <title></title>
    <link rel="stylesheet" href="http://serverapi.arcgisonline.com/jsapi/arcgis/2.5/js/dojo/dijit/themes/tundra/tundra.css">
    <link rel="stylesheet" href="http://serverapi.arcgisonline.com/jsapi/arcgis/2.5/js/esri/dijit/css/Popup.css">
    <style>
      html, body { height: 100%; width: 100%; margin: 0; padding: 0; }
      #map{ margin: 0; padding: 0; }
    </style>
    <script>var dojoConfig = { parseOnLoad: true };</script>
    <script src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=2.5"></script>
    <script>
      dojo.require("dijit.layout.BorderContainer");
      dojo.require("dijit.layout.ContentPane");
      dojo.require("esri.map");
      dojo.require("esri.arcgis.utils");

      var map;
      esri.config.defaults.geometryService = new esri.tasks.GeometryService('http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer');
      function init() {
        var agol_map = new esri.arcgis.utils.createMap("c11215b898ec46369f855c82b28fc65e", "map", {
          mapOptions: {
            slider: true,
            nav:false
          }
        });
        agol_map.addCallback(function(response) {
          // Keep a reference to the map
          map = response.map;

          dojo.connect(dijit.byId('map'), 'resize', function() { 
            dojo.connect(dijit.byId('map'), 'resize', map, map.resize);
          });
        });
      }
      dojo.ready(init);
    </script>
  </head>

  <body class="tundra">
    <div data-dojo-type="dijit.layout.BorderContainer" 
         data-dojo-props="design:'headline',gutters:false" 
         style="width: 100%; height: 100%; margin: 0;">
      <div id="map" 
           data-dojo-type="dijit.layout.ContentPane" 
           data-dojo-props="region:'center'"> 
      </div>
    </div>
  </body>
</html>

Actualización: la clave es agregar un servicio de geometría predeterminado:

esri.config.defaults.geometryService = new esri.tasks.GeometryService('http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer');
Derek Swingley
fuente