Пошаговое руководство по созданию приложения ArcGIS с помощью Angular

В этом уроке мы создадим приложение с Angular 9. Мы создадим внешнее веб-приложение, которое будет отображать базовую карту на главной странице нашего веб-сайта. Для создания пользовательского интерфейса мы будем использовать Arcgis javascript API v. 4.14 через ESRI.

Если вы не знали, как начать разработку ГИС-приложения, см. ниже.

Шаг 1. Создайте проект по умолчанию

Прежде чем начать, вы должны установить Angular CLI. Как установить, смотрите в документации angular: https://angular.io/guide/setup-local
Чтобы сгенерировать новый проект по умолчанию, используйте команду:

ng new arcgis-angualar-map
cd arcgis-angualar-map

Дополнительно нам потребуется установить два пакета: esri-loader — для загрузки Dojo требуются классы ArcGIS JavaScript API, и @types/arcgis-js-api — определения типов для ArcGIS JavaScript API, нужны для корректной работы в TypeScript

npm i --save esri-loader 
npm i --save-dev @types/arcgis-js-api

Шаг 2. Настройка проекта базовой конфигурации

Перед созданием карты нам нужно настроить наш проект. На первом этапе вставьте типы "arcgis-js-api" в tsconfig.app.json.

...
"compilerOptions": {
  ...
  "types": [
    "arcgis-js-api"
  ],
  ...
}

После этого нам нужно вставить в index.html ссылку на esri main.css и ссылку на местоположение ArcGIS JavaScrit API.

<link rel="stylesheet" href="https://js.arcgis.com/4.14/esri/themes/light/main.css">
<script src="https://js.arcgis.com/4.14/"></script>

Мы готовы создать наше начальное картографическое приложение с помощью Angular.

Шаг 3. Создайте карту

На этом шаге нам нужно будет внести изменения в три файла. Это html-шаблон, общий класс и стили нашего основного компонента. Разместите контейнер div для представления карты в html-шаблоне (app.component.html):

...
<div #mapView></div>
...

Для настройки корректного отображения мы должны указать этот код в стилях (app.component.css). "Esri-view" — это имя по умолчанию для представления карты ESRI класса стиля. Обратите внимание, что контейнер, в который помещается класс #mapView, должен иметь фиксированную высоту и ширину.

.esri-view {
  height: 100%;
  width: 100%;
  outline: none;
}

И таким же образом настройте класс основного компонента:

import {Component, ElementRef, ViewChild} from '@angular/core';
import {loadModules} from 'esri-loader';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  // Get a container link for map place
  @ViewChild('mapView', {static: true}) private readonly 
                                         mapViewElement: ElementRef;
  // main map view
  private mapView;
  title = 'ArcGIS angular map';

  constructor() {
    // This function load Dojo's  require the classes
    // listed in the array modules
    loadModules(['esri/Map', 'esri/views/MapView'])
      .then(([Map, MapView]: [__esri.MapConstructor,
                              __esri.MapViewConstructor]) => {
        // set default map properties
        const mapProperties = {
          basemap: 'gray'
        }
        // create map by default properties
        const map = new Map(mapProperties);
        // set default map view properties
        // container - element in html-template for locate map
        // zoom - default zoom parameter, value from 1 to 18
        const mapViewProperties = {
          container: this.mapViewElement.nativeElement,
          zoom: 3,
          map
        }
        // create map view by default properties
        this.mapView = new MapView(mapViewProperties);
      });
  }
}

Запустите команду ng serve и перейдите на страницу http://localhost:4200/ в браузере:

ng serve
...
** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
: Compiled successfully.

Я надеюсь, что это было полезно. В следующей заметке я покажу, как добавить слой на карту.

Ресурсы

Этот проект можно посмотреть на GitHub: https://github.com/gisprod/arcgis-angular-map.