工作开发参考 - yulilong/my_blog GitHub Wiki

项目中集成 ESRI GIS 地图

  • 安装依赖包
npm install angular2-esri-loader esri-loader --save

已经尝试过的ArcGIS地图的例子

这个已经失败了,项目跟自己的前端项目有冲突:
https://github.com/tomwayson/angular2-esri-example


已经成功集成到项目中的arcGIS代码示例

https://github.com/sachsbu/arcgis-api-with-angular2-integration

  1. 安装包:
~ npm install angular2-esri-loader --save
~ npm install @types/arcgis-js-api --save
  1. arc组件内容:
# arcgis-map.component.css   
/* import the required JSAPI css */
@import 'https://js.arcgis.com/4.3/esri/css/main.css';
.esri-view {
    height: 800px;
}

# arcgis-map.component.html
<h1>arc-gis地图</h1>
<div #mapViewNode></div>

# arcgis-map.component.ts 
import {Component, OnInit, ViewChild, ElementRef} from '@angular/core';
// also import the "angular2-esri-loader" to be able to load JSAPI modules
import {EsriLoaderService} from 'angular2-esri-loader';

@Component({
  selector: 'arc-gis-map',
  templateUrl: 'arcgis-map.component.html',
  styleUrls: ['./arcgis-map.component.css'],
  providers: []
})

export class ArcGisMap {
  public mapView: __esri.MapView;
  @ViewChild('mapViewNode') private mapViewEl: ElementRef;
  constructor(private esriLoader: EsriLoaderService) {
  }
  public ngOnInit() {
    // only load the ArcGIS API for JavaScript when this component is loaded
    return this.esriLoader.load({
      // use a specific version of the JSAPI
      url: 'https://js.arcgis.com/4.3/'
    }).then(() => {
      // load the needed Map and MapView modules from the JSAPI
      this.esriLoader.loadModules([
        'esri/Map',
        'esri/views/MapView'
      ]).then(([
        Map,
        MapView
      ]: [ __esri.MapConstructor, __esri.MapViewConstructor]) => {
        const mapProperties: __esri.MapProperties = {
          basemap: 'topo'
        };
        const map = new Map(mapProperties);
        const mapViewProperties: __esri.MapViewProperties = {
          // create the map view at the DOM element in this component
          container: this.mapViewEl.nativeElement,
          // supply additional options
          center: [72.566, 23.0396],
          zoom: 4,
          map // property shorthand for object literal
        };
        this.mapView = new MapView(mapViewProperties);
      });
    });
  }
}

# 在这个组件的上层模块中引入包的服务
# charts.module.ts
import {EsriLoaderService} from 'angular2-esri-loader';
@NgModule({
  imports: [CommonModule, ChartModule],
  declarations: [Charts],
  providers: [EsriLoaderService],
  bootstrap: [Charts]
})
  1. 在项目根目录下tsconfig.json添加代码:
{
 "types": [
      "hammerjs",
      "arcgis-js-api",  //ArcGIS需要这个
      "uglify-js",
    ]
}

待测试的项目

https://github.com/dyh333/angular2-webpack-arcgis-starter

⚠️ **GitHub.com Fallback** ⚠️