2016-11-30 7 views
0

Я пытаюсь реализовать приложение в Angular 2, где один модуль предназначен для работы со всеми необходимыми возможностями для визуализации карты. Я хочу иметь возможность переключаться между MapView и SceneView (иметь трехмерный вид с наземным поднятием). Мне удалось получить все, кроме земли. Я не знаю, является ли проблема с угловым 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

это взять меня некоторое время, но я думаю, проблема здесь шла о другой части приложение, в индексном файле порядок файлов скриптов был неправильным.

<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 был первый плагин. по какой-то причине с предыдущей версией это не влияет на внешние вызовы, но с последней версией это убивает все вызовы, и именно поэтому я не смог просмотреть наземную высоту