【发布时间】: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,然后为地址分配一个新值,则地图只会显示一个灰色框。
如您所见,我尝试了各种刷新机制,但似乎都无法正确刷新地图。
第一次单击显示/隐藏时,会绘制地图。
之后它只是一个灰色的盒子。
【问题讨论】:
-
你能提供一个关于 codepen 或类似的工作示例吗?
-
控制台有错误吗?
-
@fjc,我添加了一个 plunker。
-
我已经在我的 API 密钥存在的情况下对此进行了测试,没有区别。我在 Windows 10 上使用 Chrome(全部更新)
-
这不是我所看到的重复。我已经尝试过刷新(在 plunked 中),但没有帮助
标签: javascript angular google-maps typescript