zoukankan      html  css  js  c++  java
  • 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 () {
    
            });
          });
      });
    }
    
  • 相关阅读:
    【转】Maven多模块项目构建
    【转】vue和springboot项目使用nginx配置,并配置跨域
    关于URL与URI
    C#将16位二进制转换为有符号数
    WPF中 datagird日期列格式
    记录一个困扰了我两个周的Windows网络问题
    基于企业上下级关系的组织机构体系数据模型设计
    WPF简介
    和尚挖井故事给程序员的启示!
    看八个笑话故事 悟八个人生道理
  • 原文地址:https://www.cnblogs.com/gavin-cn/p/6868043.html
Copyright © 2011-2022 走看看