Descripcion del problema
Si está utilizando un marcador con una ventana de información visible, el uso de la CPU aumentará hasta el 100% del núcleo. Probado con Chrome.
Pasos para reproducir y una demostración mínima del problema.
http://plnkr.co/edit/q0ttx1XbTCnB4DFujtRV?p=preview
Pasos para reproducir:
Comportamiento actual
El marcador con una ventana de información abierta usa cada vez más CPU con el tiempo
Comportamiento esperado / deseado
Uso constante de la CPU
versión angular2 y angular2-google-maps
2.1.1 y 0.16.0
Otra información
si. Encontré el mismo problema.
Y yo también uso angular2.
La razón es que cuando se abre la ventana de información, la página detecta cambios una y otra vez, como un bucle. Entonces, la página se volvería a dibujar una y otra vez. Apresúrate. es un gran problema.
¿Alguna actualización / progreso sobre este tema? @SebastianM
Encontré una solución aquí: https://github.com/angular/angular/issues/10883#issuecomment -240423378
Entonces, lo que hice fue llamar a infoWindow.open () / close () fuera de Angular para evitar detecciones de cambios:
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 se ha marcado automáticamente como obsoleto porque no ha tenido actividad reciente. Se cerrará si no se produce más actividad. Gracias por sus aportaciones.
Comentario más útil
Encontré una solución aquí: https://github.com/angular/angular/issues/10883#issuecomment -240423378
Entonces, lo que hice fue llamar a infoWindow.open () / close () fuera de Angular para evitar detecciones de cambios:
map.component.html
map.component.ts