Descrição do problema
Se você estiver usando um marcador com uma janela de informações visível - aumento do uso da CPU em até 100% do núcleo. Testado com Chrome.
Etapas para reproduzir e uma demonstração mínima do problema
http://plnkr.co/edit/q0ttx1XbTCnB4DFujtRV?p=preview
Passos para reproduzir:
Comportamento atual
O marcador com uma janela de informações aberta usa cada vez mais CPU ao longo do tempo
Comportamento esperado / desejado
Uso constante da CPU
versão angular2 e angular2-google-maps
2.1.1 e 0.16.0
Outra informação
sim. Eu encontrei o mesmo problema.
E eu estou usando o angular2 também.
O motivo é que, quando a janela de informações é aberta, a página detecta mudanças repetidas vezes, como um loop. Assim, a página seria redesenhada novamente e novamente. Se apresse. é um grande problema.
Alguma atualização / progresso neste problema? @SebastianM
Encontrei uma solução aqui: https://github.com/angular/angular/issues/10883#issuecomment -240423378
Então, o que fiz foi chamar infoWindow.open () / close () fora do Angular para evitar detecções de alteração:
map.component.html
<div *ngFor="let property of _properties">
<agm-marker [latitude]="property.Lat"
[longitude]="property.Lng"
[iconUrl]="_markerIconUrl"
(mouseOver)="_infoWindowOpen($event, infoWindow);"
(mouseOut)="_infoWindowClose($event, infoWindow);">
</agm-marker>
</div>
...
<agm-info-window #infoWindow>
</agm-info-window>
map.component.ts
import { Component, OnInit, NgZone } from '@angular/core';
...
constructor(private _zone: NgZone) {...}
...
private _infoWindowOpen(mouseEvent: any, infoWindow: any) {
infoWindow.hostMarker = mouseEvent.marker;
this._zone.runOutsideAngular(() => {
infoWindow.open();
});
}
...
private _infoWindowClose(mouseEvent: any, infoWindow: any) {
this._zone.runOutsideAngular(() => {
infoWindow.close();
});
}
Este problema foi marcado automaticamente como obsoleto porque não teve atividades recentes. Ele será fechado se nenhuma outra atividade ocorrer. Obrigado por suas contribuições.
Comentários muito úteis
Encontrei uma solução aqui: https://github.com/angular/angular/issues/10883#issuecomment -240423378
Então, o que fiz foi chamar infoWindow.open () / close () fora do Angular para evitar detecções de alteração:
map.component.html
map.component.ts