2016-11-30 3 views
0

Ich versuche eine Anwendung in Angular 2 zu implementieren, wo ein Modul mit allen Anforderungen für die Kartenvisualisierung arbeiten soll. Ich möchte zwischen MapView und einem SceneView wechseln können (um eine 3D-Ansicht mit der Geländeansicht zu haben). Ich konnte alles außer der Bodenhöhe arbeiten. Ich weiß nicht, ob es ein Problem mit eckigen 2 von etwas anderem ist, aber wenn ich die aktuelle API (4.1) durch die ältere Version (4.0) ersetze, erscheint die Geländeansicht, Aber alle Beispiele aus der Dokumentation verwenden die 4.1 Also muss es mein Problem sein. Hat jemand das gleiche Problem?esri Boden Welt-Elevation Funktioniert nicht

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)); 
 
    });

Antwort

0

es eine Weile dauern, aber ich herausfinden, das Problem hier war über einen anderen Teil der Anwendung, in der Indexdatei war die Reihenfolge der Skriptdateien falsch.

<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> 

soll dies war die richtige Reihenfolge, in meinem Fall sein das Reflect.js das erste Plugin. Aus irgendeinem Grund wirkt sich dies bei der vorherigen Version nicht auf die externen Anrufe aus, aber mit der neuesten Version werden alle Anrufe beendet, und deshalb konnte ich die Bodenhöhe

nicht anzeigen