2017-01-14 7 views
0

Googleマップを統合した角度2のアプリケーションがあります。 私はサーバーからフェッチしてマップ上に表示する必要のある2つのgeojsonファイルを持っています。これらのファイルには、各フィーチャのプロパティの色が含まれています。geojsonファイルが正しくロードされていることを確認するにはどうすればよいですか?

ファイルを取得した後に色を動的に含めました。私マップコンポーネントで

私は、次のしている:マップサービスで

ngOnInit() { 
     this.subscription = this.service.loadGeoJson().subscribe(() => this.geoJsonInit()); 
    } 

    ngOnDestroy() { this.subscription.unsubscribe(); } 

    private geoJsonInit() { 
     Promise.resolve(dashboardMapService.getAllGeoJsonData().then(geoData => this.geoJsonData.push(...geoData))).then(() => dashboardMapService.loadAPI().then(res => this.onMapsReady())); 
    } 

私は、次のしている:

const GEO_JSON: Array<Object> = []; 
    let GeoJsonPromise   = Promise.resolve(GEO_JSON); 

//rest of service 

static getAllGeoJsonData() { 
     return GeoJsonPromise; 
    } 

    loadGeoJson(): Observable<any> { 
     if (GEO_JSON && GEO_JSON.length > 0) return Observable.of(GEO_JSON); 
     else 
      return Observable.forkJoin([ this.loadDistrictsGeoJson(), this.loadSubDistrictsGeoJson() ]).switchMap(d => this.GeoJsonInit(d)); 
    } 

私が直面しています問題は、最初のロード時に、ポリゴンがあるということですマップ上に表示されますが、色は表示されません。 しかし、ルートを切り替えて地図ルートに戻ると、色が表示されます。

コンソールで。 feature.getProperty( 'color')は、最初に未定義の を表示しますが、マップルートから前後に移動した後に定義されます。

私は、渡されるgeojsonsファイルに最初に色が含まれていないと仮定しています。

地図にロードする前にジオジョンが正しく取り込まれていることを確認するにはどうすればよいですか?未定義

答えて

0
private geoJsonInit() { 
    Promise.resolve(dashboardMapService.getAllGeoJsonData().then(geoData => this.geoJsonData.push(...geoData))).then(() => dashboardMapService.loadAPI().then(res => this.onMapsReady())); 
} 

戻ります - あなたがやるべきことは

private geoJsonInit() { 
    return dashboardMapService.getAllGeoJsonData() 
     .then(geoData => this.geoJsonData.push(...geoData)) 
     .then(() => dashboardMapService.loadAPI()) 
     .then(res => this.onMapsReady()); 
} 
です
関連する問題