【问题标题】:google maps grey box on *ngIf [duplicate]谷歌在*ngIf上映射灰色框[重复]
【发布时间】:2018-02-20 17:18:47
【问题描述】:

我有一个组件。

@Component({
    selector: "panda-map",
    template: `
        <div class="map" [style.height.px]="height">
        </div>
    `
})
export class PandaMapComponent implements OnInit {
    @Input() height: string = "400";
    @Input() scroll: boolean = false;
    map: google.maps.Map;

    constructor(
        private readonly element: ElementRef,
        private readonly logger: NGXLogger) {
    }

    ngOnInit(): void {
        const div = this.element.nativeElement.querySelector("div");
        if (this.map)
            return;

        this.map = new google.maps.Map(
            div,
            {
                zoom: 8,
                center: { lat: -26.1714402, lng: 28.0050053 },
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                scrollwheel: this.scroll
            });
        google.maps.event.trigger(this.map, "resize");
        google.maps.event.addListener(this.map, "idle", function () {
            google.maps.event.trigger(this.map, "resize");
        });
    }
}

地图显示在父组件上,如下所示:

<div class="pull-left shadow-panel map" *ngIf="address">
   <div>
      <panda-map [height]="400">
      </panda-map>
   </div>
</div>

地址会定期更改。

第一次创建地图时,它可以完美运行。如果将地址设置为null,然后为地址分配一个新值,则地图只会显示一个灰色框。

如您所见,我尝试了各种刷新机制,但似乎都无法正确刷新地图。

Complete Plunker

第一次单击显示/隐藏时,会绘制地图。
之后它只是一个灰色的盒子。

【问题讨论】:

  • 你能提供一个关于 codepen 或类似的工作示例吗?
  • 控制台有错误吗?
  • @fjc,我添加了一个 plunker。
  • 我已经在我的 API 密钥存在的情况下对此进行了测试,没有区别。我在 Windows 10 上使用 Chrome(全部更新)
  • 这不是我所看到的重复。我已经尝试过刷新(在 plunked 中),但没有帮助

标签: javascript angular google-maps typescript


【解决方案1】:

角度指令 *ngIf 删除 DOM 中的标记。但是您的组件只执行一次 ngOnInit。所以你的地图没有正确重新初始化。

您可以使用 [style.display] 代替 *ngIf

  <div class="sh" [style.display]="address ? 'none' : 'block'">
    <panda-map ></panda-map>
  </div>

(我试过你的 plunker,它工作正常)

【讨论】:

  • NgOnInit 每次地址更改时执行?如果我尝试使用 [hidden]=“!address” 我有同样的问题。我想知道如何重新初始化地图——而不是让它成为单例。当同一个 SPA 应用程序上有多个地图时,我怀疑我会遇到其他问题。
  • 你试过我的代码修复了吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-09
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
相关资源
最近更新 更多