• Ionic2集成ArcGIS JavaScript API.md


    1. Ionic同原生ArcGIS JavaScript API结合

    1.1. 安装esri-loader

    在工程目录下命令行安装:

    npm install angular2-esri-loader esri-loader;
    

    1.2. 构造地图Component

    map.rar这个Component解压到pages文件夹下
    这是一个实现参考,定义了一个地图展示Component。
    ts代码

    import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';
    
    import { EsriLoaderService } from 'angular2-esri-loader';
    
    @Component({
      selector: 'app-esri-map',
      templateUrl: './esri-map.component.html'
    })
    export class EsriMapComponent implements OnInit {
      map: any;
      agoLayer: any;
      constructor(private esriLoader: EsriLoaderService) { }
    
      ngOnInit() {
        // only load the ArcGIS API for JavaScript when this component is loaded
        return this.esriLoader.load({
          // use a specific version of the API instead of the latest
          url: 'http://10.10.70.85:6090/arcgis_js_api/library/3.20/3.20/init.js'
        }).then(() => {
          // load the map class needed to create a new map
          this.esriLoader.loadModules(["esri/map", "esri/layers/ArcGISTiledMapServiceLayer"]).then(([Map, ArcGISTiledMapServiceLayer]) => {
            // create the map at the DOM element in this component
            this.map = new Map("mapDiv");
            let agoServiceURL = "http://10.10.70.176:6080/arcgis/rest/services/clzhgwnew/cldx/MapServer";
            this.agoLayer = new ArcGISTiledMapServiceLayer(agoServiceURL);
            this.map.addLayer(this.agoLayer);
          });
        });
      }
    }
    

    template代码

    <div id="mapDiv"></div>
    

    1.3. 在app.module.ts中增加引用

    import { EsriLoaderService } from 'angular2-esri-loader';
    import { EsriMapComponent } from '../pages/map/esri-map.component';
    @NgModule({
      declarations: [
        ...
        EsriMapComponent,
        ...
      ],
      imports: [
        ...
      ],
      bootstrap: [IonicApp],
      entryComponents: [
        ...
        EsriMapComponent,
        ...
      ],
      providers: [
        ...
        EsriLoaderService,
        ...
      ]
    })
    export class AppModule { }
    

    1.4. 增加相关的CSS引用

    index.html中增加如下CSS的引用:

    <link rel="stylesheet" href="http://10.10.70.85:6090/arcgis_js_api/library/3.20/3.20/esri/css/esri.css" />
    

    1.5. 地图Component测试

    随便找个页面增加如下标签即可显示地图:

    ...
    <app-esri-map></app-esri-map>
    ...
    

    2. 同自己封装的Dojo组件集成

    这里的主要问题是Dojo的组件是基于AMD的模块加载机制进行编写和加载的,主要解决的是Dojo的模块发现和加载。
    需要基于第1节中的描述,增加如下配置:

    2.1 模块发现

    模块发现,还是借助于Dojo的dojoConifg配置项,在index.html<head>中增加配置项的内容:

    <script>
      var dojoConfig = {  
        parseOnLoad:false,  
        packages: [
          {  
            "name": "must",  
            "location": "/assets/gis/must"  
          },
          {  
            "name": "modules",  
            "location": "/assets/gis/modules"  
          }
        ]  
      }; 
    </script>
    

    这样需要将自己定义的Dojo组件拷贝到src/assets/下的gis`目录下(手工新建目录即可),实现自动同步。

    2.1 组件加载

    然后就借助于1.2节中的描述,使用esriLoader进行组件加载即可,代码示例如下:

    ngOnInit() {
      // only load the ArcGIS API for JavaScript when this component is loaded
      return this.esriLoader.load({
        // use a specific version of the API instead of the latest
        url: 'http://10.10.70.85:6090/arcgis_js_api/library/3.20/3.20/init.js'
      }).then(() => {
        // load the map class needed to create a new map
        this.esriLoader.loadModules(["esri/map",
          "must/LoadMap",
          "esri/geometry/Point",
          "must/Toolbar",
          "must/mapHandle/MapHandle"]).then(([Map, LoadMap, Point, Toolbar, MapHandle]) => {
            //创建右侧工具栏
            var mapTool = new MapHandle();
            this.gis.loadMap = new LoadMap("mapDiv", mapTool);
            var map = this.gis.loadMap.getMap();
            this.gis.toolbar = new Toolbar(map);
            map.on('load', function () {
    
            });
          });
      });
    }
    
  • 相关阅读:
    像asp.net Mvc一样开发nodejs+express Mvc站点
    js数组方法大全
    自己的时间规划
    7月暑假生活总结
    01. What Is Discrete Mathematics(中英字幕 by Ocean-藏心)
    找工作专题---二分查找
    angular.js 入门基础
    WCF实例管理
    是技术牛人,如何拿到国内IT巨头的Offer
    python
  • 原文地址:https://www.cnblogs.com/gavin-cn/p/6868043.html
Copyright © 2020-2023  润新知