Использование инструмента рисования ArcGIS

Я обнаружил инструмент рисования в ArcGIS. Код виджета выглядит следующим образом:

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width,user-scalable=no">

    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
    <title>Maps Toolbar</title>

    <link rel="stylesheet" href="https://js.arcgis.com/3.20/dijit/themes/nihilo/nihilo.css">
    <link rel="stylesheet" href="https://js.arcgis.com/3.20/esri/css/esri.css">
    <style>
      html, body, #mainWindow {
        font-family: sans-serif; 
        height: 100%; 
        width: 100%; 
      }
      html, body {
        margin: 0; 
        padding: 0;
      }
      #header {
        height: 80px; 
        overflow: auto;
        padding: 0.5em;
      }
    </style>

    <script src="https://js.arcgis.com/3.20/"></script>
    <script>
      var map, toolbar, symbol, geomTask;

      require([
        "esri/map", 
        "esri/toolbars/draw",
        "esri/graphic",

        "esri/symbols/SimpleMarkerSymbol",
        "esri/symbols/SimpleLineSymbol",
        "esri/symbols/SimpleFillSymbol",

        "dojo/parser", "dijit/registry",

        "dijit/layout/BorderContainer", "dijit/layout/ContentPane", 
        "dijit/form/Button", "dijit/WidgetSet", "dojo/domReady!"
      ], function(
        Map, Draw, Graphic,
        SimpleMarkerSymbol, SimpleLineSymbol, SimpleFillSymbol,
        parser, registry
      ) {
        parser.parse();

        map = new Map("map", {
          basemap: "streets",
          center: [-15.469, 36.428],
          zoom: 3
        });

        map.on("load", createToolbar);

        // loop through all dijits, connect onClick event
        // listeners for buttons to activate drawing tools
        registry.forEach(function(d) {
          // d is a reference to a dijit
          // could be a layout container or a button
          if ( d.declaredClass === "dijit.form.Button" ) {
            d.on("click", activateTool);
          }
        });

        function activateTool() {
          var tool = this.label.toUpperCase().replace(/ /g, "_");
          toolbar.activate(Draw[tool]);
          map.hideZoomSlider();
        }

        function createToolbar(themap) {
          toolbar = new Draw(map);
          toolbar.on("draw-end", addToMap);
        }

        function addToMap(evt) {
          var symbol;
          toolbar.deactivate();
          map.showZoomSlider();
          switch (evt.geometry.type) {
            case "point":
            case "multipoint":
              symbol = new SimpleMarkerSymbol();
              break;
            case "polyline":
              symbol = new SimpleLineSymbol();
              break;
            default:
              symbol = new SimpleFillSymbol();
              break;
          }
          var graphic = new Graphic(evt.geometry, symbol);
          map.graphics.add(graphic);
        }
      });
    </script>
  </head>
  <body class="nihilo">

  <div id="mainWindow" data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline'">
    <div id="header" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'top'">
      <span>Draw:<br /></span>
      <button data-dojo-type="dijit/form/Button">Point</button>
      <button data-dojo-type="dijit/form/Button">Multi Point</button>
      <button data-dojo-type="dijit/form/Button">Line</button>
      <button data-dojo-type="dijit/form/Button">Polyline</button>
      <button data-dojo-type="dijit/form/Button">Polygon</button>
      <button data-dojo-type="dijit/form/Button">Freehand Polyline</button>
      <button data-dojo-type="dijit/form/Button">Freehand Polygon</button>

      <button data-dojo-type="dijit/form/Button">Arrow</button>
      <button data-dojo-type="dijit/form/Button">Triangle</button>
      <button data-dojo-type="dijit/form/Button">Circle</button>
      <button data-dojo-type="dijit/form/Button">Ellipse</button>
    </div>
    <div id="map" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'"></div>
  </div>

  </body>
</html>

Я очень новичок в ArcGIS, поэтому мой вопрос может быть простым. Интересно, а можно ли фоновую карту заменить каким-нибудь другим изображением, например, слоем, изображающим этаж в здании? У меня есть это изображение в формате JPEG, и ему назначены глобальные координаты. Итак, как я могу заменить карту на это изображение? Должен ли я обновить эти строки кода?

    map = new Map("map", {
      basemap: "streets",
      center: [-15.469, 36.428],
      zoom: 3
    });

person Dinosaurius    schedule 26.05.2017    source источник


Ответы (1)


Ну, эти фоновые изображения известны как базовая карта в терминах Гиса. ARCGIS js API предоставляет несколько базовых карт, таких как топографические карты, улицы, изображения и т. д.

Чтобы изменить фон/базовую карту, вам нужно изменить ключевое слово базовой карты.

Пример-

Измените «улицы» на «топо». Это изменит базовую карту/фон.

Примечание. Вы можете попробовать различные типы базовых карт, которые доступны в API-интерфейсе arcgis.

ОТРЕДАКТИРОВАНО [30 мая 2017 г.] -

Здесь я предлагаю вам использовать существующую базовую карту, предоставленную ESRI. Однако, если вы хотите показать свои собственные изображения в качестве фона/базовой карты, вам необходимо опубликовать/переиздать базовую карту.

Надеюсь, это поможет вам.

person Vikash Pandey    schedule 28.05.2017
comment
Замена готовых базовых карт Esri другим изображением (например, этажом здания) потребует публикации сервиса мозаичных изображений. - person Erica; 30.05.2017
comment
не говорите на словах... попытайтесь понять вопрос. Однако я также знаю о процессе публикации/обновления базовых карт/плиточных сервисов. перед тем, как понизить голосование, я думаю, вам просто нужно прочитать примечание, которое я добавил в ответ. Вы действительно думаете, что человек спрашивает, как я могу опубликовать новую базовую карту, используя новые данные изображения. В этом вопросе упоминалась только цель: как я могу изменить фон. вот почему я четко упомянул, что прошу вас попробовать существующие базовые карты ArcGIS .. (y) :) - person Vikash Pandey; 30.05.2017
comment
Ваше решение отлично работает для подавляющего большинства случаев использования базовых карт, но не для пользовательского изображения. Пока вы добавляете эту деталь (отвечает на их предложение какое-то другое изображение, например, слой, представляющий пол в здании), это совершенно прекрасный ответ;) - person Erica; 30.05.2017