Menambahkan basemap khusus di ArcGIS.Com yang dapat digunakan dalam Javascript API?

8

Dimungkinkan untuk menambahkan layer sebagai basemap di ArcGIS.com dengan mencentang kotak centang yang digunakan sebagai baselayer:

Gunakan sebagai Layer dasar

Tetapi ketika saya menggunakan peta menggunakan:

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

basemap tidak muncul, apakah ada aturan yang menentukan konten apa yang dapat digunakan sebagai basemap?

MathiasWestin
sumber
satu pertanyaan cepat, setelah Anda menambahkan Layanan Web yang diperlukan sebagai basemap, apakah Anda dapat menyesuaikannya dan mengaktifkan munculan di atasnya? Dengan cara yang sama seperti yang dapat kita lakukan ketika kita menambahkan shapefile sederhana dan kemudian mengaktifkan munculan di atasnya. Saya sudah mencoba tetapi tampaknya jika Anda ingin menambahkan shapefile sebagai basemap, fitur popup yang diaktifkan tidak lagi tersedia. Ini adalah pertanyaan yang saya posting, gis.stackexchange.com/questions/31825/...
Sam007

Jawaban:

7

Ya, ini sangat mungkin, inilah sebuah contoh:

<!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>

Pembaruan: Kuncinya adalah menambahkan layanan geometri default:

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