2016-11-30 10 views
0

하나의 모듈이 맵 시각화에 필요한 모든 작업을 수행하는 Angular 2로 애플리케이션을 구현하려고합니다. MapView와 SceneView간에 전환 할 수 있기를 원합니다 (지상 고각에서 3D보기를 사용하기 위해). 지상 높이를 제외하고 모든 것을 작동시킬 수있었습니다. 각도 2에 문제가 있는지 모르겠지만 현재 API (4.1)을 이전 버전 (4.0)으로 바꿀 때 지상 고도가 표시됩니다. 하지만 문서의 모든 예제는 4.1을 사용합니다 그래서 내 문제가되어야합니다. 누구나 같은 문제가 발생합니까?esri ground world-elevation 작동하지 않음

ngOnInit() { 
 
    
 
    let self = this 
 
    this.setSceneView().then(function (obj: SceneView) { 
 
      
 
      self.actualView = obj;   
 
      obj.on("click",(e) => self.onMapClick(e)); 
 

 
     }); 
 
    } 
 
    private setSceneView() { 
 
     return new SceneView({ 
 
      container: this.elmentRef.nativeElement.lastChild.firstChild, 
 
      map: new Map({ basemap: 'topo', ground: 'world-elevation' }), 
 

 
      zoom: this.zoom, 
 
      center: this.center, 
 
      
 
     }); 
 
    }

Systemjs.config.js이

(function (global) { 
 
    System.config({ 
 
    paths: { 
 
     // paths serve as alias 
 
    'npm:': 'node_modules/', 
 
     moment: 'node_modules/moment/moment.js'  
 
    }, 
 

 
    // map tells the System loader where to look for things 
 
    map: { 
 
     // our app is within the app folder 
 
     app: 'app', 
 
     // angular bundles 
 
     '@angular/core': 'npm:@angular/core/bundles/core.umd.js', 
 
     '@angular/common': 'npm:@angular/common/bundles/common.umd.js', 
 
     '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js', 
 
     '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js', 
 
     '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', 
 
     '@angular/http': 'npm:@angular/http/bundles/http.umd.js', 
 
     '@angular/router': 'npm:@angular/router/bundles/router.umd.js', 
 
     '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js', 
 
     // other libraries 
 
     'rxjs': 'npm:rxjs', 
 
     'angular-in-memory-web-api': 'npm:angular-in-memory-web-api', 
 
     'ng2-bootstrap': 'npm:ng2-bootstrap', 
 
    }, 
 
    // packages tells the System loader how to load when no filename and/or no extension 
 
    packages: { 
 
     app: { 
 
     main: './main.js', 
 
     defaultExtension: 'js' 
 
     }, 
 
     rxjs: { 
 
     defaultExtension: 'js' 
 
     }, 
 
     'angular-in-memory-web-api': { 
 
     main: './index.js', 
 
     defaultExtension: 'js' 
 
     }, 
 
     'ng2-bootstrap': { 
 
     main: './ng2-bootstrap.js', 
 
     defaultExtension: 'js' 
 
     } 
 
    } 
 
    }); 
 

 

 
    esriSystem.register(
 
    // array of Esri module names to load and then register with SystemJS 
 
    [ 
 
     //"dojo/on", 
 
     'esri/Map', 
 
     'esri/core/Collection', 
 
     'esri/layers/FeatureLayer', 
 
     'esri/renderers/SimpleRenderer', 
 
     'esri/symbols/Symbol', 
 
     'esri/symbols/SimpleMarkerSymbol', 
 
     'esri/symbols/SimpleLineSymbol', 
 
     'esri/Graphic', 
 
     'esri/Color', 
 
     'esri/geometry/Polygon', 
 
     'esri/geometry/Polyline', 
 
     'esri/geometry/Point', 
 
     'esri/views/View', 
 
     'esri/views/MapView', 
 
     "esri/views/SceneView", 
 
     'esri/widgets/Widget', 
 
     'esri/widgets/BasemapToggle', 
 
     'esri/request' 
 
    ], 
 
    // optional callback function 
 
    function() { 
 
     // then bootstrap application 
 
     System.import('app/main').then(null, console.error.bind(console)); 
 
    });

답변

0

이 나에게 시간이 걸릴하지만 난 알아, 문제는 여기의 다른 부분에 대해이었다 aplication, 색인 파일에서 스크립트 파일의 순서가 잘못되었습니다.

<script src="node_modules/core-js/client/shim.min.js"></script> 
<script src="node_modules/zone.js/dist/zone.js"></script> 

<script src="node_modules/reflect-metadata/Reflect.js"></script> 
<script src="node_modules/systemjs/dist/system.src.js"></script> 

이 경우 올바른 순서 여야합니다. 제 경우에는 Reflect.js가 첫 번째 플러그인이었습니다. 어떤 이유로 든 이전 버전으로는 외부 호출을 제대로 처리하지 못했지만 최신 버전에서는 모든 호출을 종료하므로 지상 높이를 볼 수 없었습니다