Angular - * ngIf和OpenLayers

时间:2018-03-28 09:07:53

标签: angular openlayers-3

我的问题是,当我使用*ngIf来控制我的分区时,osmLayersatelliteLayer都会消失(迷你地图),似乎*ngIf会阻止它,这里是我的代码:

<div *ngIf="fruitionMap.backgroundType !== 'UNICOLOR'"
 (mouseenter)="displayBackgroundMode=true"
 (mouseleave)="displayBackgroundMode=false">
<a (click)="changeBackground('OSM')"
   matTooltip="{{ 'Map' | translate }}" [matTooltipPosition]="'left'"
  [style.display]="(fruitionMap?.backgroundType === 'OSM')?'none':''">
    <div id="miniMapOSM"></div>
</a>
<a (click)="changeBackground('SATELLITE')"
   matTooltip="{{ 'Satellite' | translate }}" 
   [matTooltipPosition]="'left'"
   [style.display]="(fruitionMap?.backgroundType === 'SATELLITE')?'none':''">
    <div id="miniMapSatellite"></div>
</a>

 <div  *ngIf="displayBackgroundMode">
  <a (click)="changeBackground('UNICOLOR')"
   matTooltip="{{ 'Unicolor' | translate }}" 
   [matTooltipPosition]="'left'"
   [style.display]="(fruitionMap?.backgroundType === 'UNICOLOR')?'none':''">
     <div id="miniMapUnicolor"></div>
  </a>
</div>
</div>

=============================================== =====================

const satelliteLayer = new ol.layer.Tile({
  preload: Infinity,
  source: new ol.source.BingMaps({
    key: MapSettings.bingKey,
    imagerySet: 'Aerial',
    maxZoom: 19,
  }),
});

const osmLayer = new ol.layer.Tile({
  source: new ol.source.OSM()
});

new ol.Map({
  target: 'miniMapSatellite',
  layers: [satelliteLayer],
  logo: false,
  view: this.mainView,
});

new ol.Map({
  target: 'miniMapOSM',
  layers: [osmLayer],
  logo: false,
  view: this.mainView,
});

请帮忙:)

1 个答案:

答案 0 :(得分:0)

在这些情况下,我会在我的控制器中使用一个函数来记录问题。如果您的图层消失,那肯定会更多,因为您的代码评估为FALSE而不是ol3问题。

实施例: 替换:

<div *ngIf="fruitionMap.backgroundType !== 'UNICOLOR'">

由:

 <div *ngIf="debugBackground();">

并在控制器中:

function debugBackground() {
   console.log(fruitionMap.backgroundType);
   console.log(fruitionMap.backgroundType !== 'UNICOLOR');
   return fruitionMap.backgroundType !== 'UNICOLOR';
}

看看发生了什么。

此外:我不确定此代码[style.display]="(fruitionMap?.backgroundType === 'UNICOLOR')?'none':''">是否有效。你不加一个额外的'?'吗?