Angular-google-maps: نافذة المعلومات تتسرب

تم إنشاؤها على ١٨ ديسمبر ٢٠١٦  ·  4تعليقات  ·  مصدر: SebastianM/angular-google-maps

وصف المشكلة

إذا كنت تستخدم علامة مع نافذة معلومات مرئية - ينمو استخدام وحدة المعالجة المركزية بنسبة تصل إلى 100٪ من النواة. تم اختباره مع Chrome.

خطوات إعادة إنتاج وعرض بسيط للمشكلة

http://plnkr.co/edit/q0ttx1XbTCnB4DFujtRV؟p=preview

خطوات التكاثر:

  1. افتح مدير مهام Chrome (القائمة - المزيد من الأدوات - إدارة المهام)
  2. تحقق من أن استخدام وحدة المعالجة المركزية بواسطة plunkr منخفض ولا ينمو
  3. انقر فوق الزر "تبديل المعلومات" (يجب أن تظهر نافذة المعلومات بعد النقر)
  4. راقب استخدام وحدة المعالجة المركزية لمدة دقيقة واحدة (ستلاحظ نموها بمرور الوقت)
  5. (اختياري) انقر فوق الزر "تبديل المعلومات" مرة أخرى (يظل استخدام وحدة المعالجة المركزية مرتفعًا حتى بعد إغلاق نافذة المعلومات)

السلوك الحالي

يستخدم Marker الذي يحتوي على نافذة معلومات مفتوحة المزيد والمزيد من وحدة المعالجة المركزية بمرور الوقت

السلوك المتوقع / المطلوب

استخدام ثابت لوحدة المعالجة المركزية

angular2 & angular2-google-maps الإصدار

2.1.1 و 0.16.0

معلومات أخرى

urgent AgmInfoWindow stale bug

التعليق الأكثر فائدة

لقد وجدت حلاً هنا: https://github.com/angular/angular/issues/10883#issuecomment -240423378
إذن ما فعلته هو استدعاء infoWindow.open () / close () خارج Angular لتجنب اكتشافات التغيير:

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();
    });
  }

ال 4 كومينتر

نعم فعلا. لقد وجدت نفس المشكلة.
وأنا أستخدم angular2 أيضًا.
والسبب هو أنه عند فتح نافذة المعلومات ، ستكتشف الصفحة التغيير مرارًا وتكرارًا ، مثل التكرار الحلقي. لذلك ستتم إعادة رسم الصفحة مرارًا وتكرارًا. عجلوا. إنها قضية كبيرة.

أي تحديث / تقدم بشأن هذه المسألة؟ تضمين التغريدة

لقد وجدت حلاً هنا: https://github.com/angular/angular/issues/10883#issuecomment -240423378
إذن ما فعلته هو استدعاء infoWindow.open () / close () خارج Angular لتجنب اكتشافات التغيير:

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();
    });
  }

تم وضع علامة على هذه المشكلة تلقائيًا على أنها قديمة نظرًا لعدم وجود نشاط حديث لها. سيتم إغلاقه إذا لم يحدث أي نشاط آخر. شكرا لمساهماتكم.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

maneesht picture maneesht  ·  3تعليقات

Subhojit1992 picture Subhojit1992  ·  3تعليقات

gizm0bill picture gizm0bill  ·  4تعليقات

ostapch picture ostapch  ·  4تعليقات

PeterSisovsky picture PeterSisovsky  ·  3تعليقات