Отображение нескольких слоев, ArcGIS javascript api

Я кодовая академия, идиот Javascript, пожалуйста, помогите. Все, что я хочу сделать, это понять, почему следующий код не работает. Он должен отображать карту океанов с морскими охраняемыми районами поверх нее, но отображать только карту океанов. Firebug говорит, что новый ArcGISDynamicLayer не является конструктором, но ссылка на API говорит, что это подходящий конструктор.

Я пытаюсь узнать, поэтому был бы признателен за описания того, как это не работает, а также за решения. Спасибо

      <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
          <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no">
          <title></title>
          <style>
              html,
              body,
              #mapDiv {
                  padding: 0;
                  margin: 0;
                  height: 100%;
              }
          </style>
          <link rel="stylesheet" href="http://js.arcgis.com/3.9/js/esri/css/esri.css">
          <link rel="stylesheet" href="http://js.arcgis.com/3.9/js/dojo/dijit/themes/claro/claro.css">
          <link rel="stylesheet" type="text/css" href="css/viewer.css">
          <script type="text/javascript">
              var djConfig = {
                  parseOnLoad: true
              };
          </script>
          <script src="http://js.arcgis.com/3.9/"></script>
          <script>
              require(["esri/map",
                      "esri/layers/ArcGISMapServiceLayer"
                  ],
                  function (Map, ArcGISDynamicMapServiceLayer) {
                      map = new Map("mapDiv", {
                          center: [-56.049, 38.485],
                          zoom: 3,
                          basemap: "oceans"
                      });
                      var newLayer = new ArcGISDynamicMapServiceLayer("http://egisws02.nos.noaa.gov/ArcGIS/rest/services/MPA/MPA_Inventory/MapServer", {
                          "id": "mpa"
                      });
                      map.addLayer(newLayer);
                  });
          </script>
      </head>

      <body>

          <body class="claro">
              <div id="mapDiv"></div>
          </body>
      </body>

      </html>

person hselbie    schedule 16.04.2014    source источник


Ответы (1)


Мне удалось ответить на свой вопрос, в моем заявлении require я запрашивал ArcGISMapServiceLayer, а затем объявлял свою переменную функции для ArcGISDynamicMapServiceLayer. Решили проблему и продвигаемся вперед со следующими шагами переключения между ними.

Есть идеи, как отлаживать что-то подобное в будущем?

person hselbie    schedule 16.04.2014
comment
Похоже, вы отлично его отладили. :) Один трюк, который я использую с операторами Dojo require, - это один обязательный модуль на строку как в массиве, так и в параметрах функции, оба с одинаковым уровнем отступа - это обеспечит визуальную проверку соответствия правильных элементов. - person Anthony -GISCOE-; 22.04.2014