Angular-google-maps: рдЬрдм рдХреЛрдИ рдирдпрд╛ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ рддреЛ рдорд╛рд░реНрдХрд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╡рд┐рдВрдбреЛ рдмрдВрдж рдХрд░реЗрдВ?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рджрд┐рд╕ре░ 2016  ┬╖  23рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: SebastianM/angular-google-maps

рдХреНрдпрд╛ рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

stale discussion / question

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореЗрд░рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗрд╡рд▓ рд╕рдорд╛рдзрд╛рди:

<sebm-google-map #gm [latitude]="lat" [longitude]="lng" [zoom]="zoom" [scrollwheel]="false" [styles]="mapStyles">
    <sebm-google-map-marker *ngFor="let place of places"
    [latitude]="place.point.lat"
    [longitude]="place.point.lng"
    [label]="place.name[0]"
    (markerClick)="gm.lastOpen?.close(); gm.lastOpen = infoWindow">
    <sebm-google-map-info-window #infoWindow>
        <strong>{{place.name}}</strong>
    </sebm-google-map-info-window>
</sebm-google-map-marker>

рд╕рднреА 23 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рд╛рдБ, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рднреА рдЗрд╕реА рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИред

рдпрд╣рд╛рдБ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдкреНрд▓рдВрдХ рд╣реИ
http://plnkr.co/edit/cwuwBN?p=preview

рдореИрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред
рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (google-map-info-window.ts):

// рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╢реАрд░реНрд╖ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВ, рдиреАрдЪреЗ infoWindowId = 0; (рдкрдВрдХреНрддрд┐ 7)
рдЬрд╛рдирдХрд╛рд░реА рджреЗрдВ

open (): рд╡рд╛рджрд╛{{
рдЕрдЧрд░ (infoWindowLastContext! == null) {
this._infoWindowManager.close (infoWindowLastContext)
}

infoWindowLastContext = this;

return this._infoWindowManager.open(this);

}

рдореИрдВ рдЗрд╕ рдЙрдореНрдореАрдж рдореЗрдВ рд╣реВрдБ рдХреА рдЗрд╕рд╕реЗ рдорджрдж рдорд┐рд▓реЗрдЧреА...

рдореЗрд░рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗрд╡рд▓ рд╕рдорд╛рдзрд╛рди:

<sebm-google-map #gm [latitude]="lat" [longitude]="lng" [zoom]="zoom" [scrollwheel]="false" [styles]="mapStyles">
    <sebm-google-map-marker *ngFor="let place of places"
    [latitude]="place.point.lat"
    [longitude]="place.point.lng"
    [label]="place.name[0]"
    (markerClick)="gm.lastOpen?.close(); gm.lastOpen = infoWindow">
    <sebm-google-map-info-window #infoWindow>
        <strong>{{place.name}}</strong>
    </sebm-google-map-info-window>
</sebm-google-map-marker>

@soyersoyer @lazarljubenovic

<agm-map #gm [latitude]="lat" [longitude]="lng" [zoom]="zoom" [scrollwheel]="false" [styles]="mapStyles">
    <sebm-google-map-marker *ngFor="let place of places"
    [latitude]="place.point.lat"
    [longitude]="place.point.lng"
    [label]="place.name[0]"
    (markerClick)="gm.lastOpen?.close(); gm.lastOpen = infoWindow">
    <agm-info-window #infoWindow>
        <strong>{{place.name}}</strong>
    </agm-info-window>
</agm-marker>

рдирдП 1.0.0-beta.0 рдХреЗ рд╕рд╛рде - рдЧреНрд░реАрди-рдЬрд╝реЗрдмрд░рд╛ рдПрдУрдЯреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ:
рд╕рдВрдкрддреНрддрд┐ 'lastOpen' 'AgmMap' рдкреНрд░рдХрд╛рд░ рдкрд░ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ

рдХреНрдпрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?

рдорд╣рд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореЗрд░рд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо рдХреНрд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ

(markerClick)="gm.lastOpen?.close(); gm.lastOpen = infoWindow; markerClicked(m);"

рдирдорд╕реНрддреЗ,

@ рдорд╛рд░реНрдЯрд┐рди-рдмреА рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рднреА, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: /

рдХреЛрдИ рдорджрдж ?

@ рдорд╛рд░реНрдЯрд┐рди-рдмреА рдзрдиреНрдпрд╡рд╛рдж рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдвреЗрд░ред рдПрдХ рдЗрд▓рд╛рдЬ рдХрд░рддрд╛ рд╣реИ!

@ рдорд╛рд░реНрдЯрд┐рди-рдмреА рдирд╛рдЗрд╕ thx!
рдореБрдЭ рдкрд░ #infoWindow <agm-info-window> рдЬреЛрдбрд╝рдирд╛ рднреВрд▓ рдЧрдПред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЖрдкрдиреЗ рднреА рдпрд╣реА рдЧрд▓рддреА рдХреА рд╣реЛ?


рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ OpenIW (рдбреЗрдЯрд╛ = рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд) {
рдЕрдЧрд░ (рдпрд╣ред IW) {
this.IW.close ();
}

this.IW = data;

}

@ рдорд╛рд░реНрдЯрд┐рди-рдмреА рдЗрд╕реЗ рдХреИрд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ((рдорд╛рд░реНрдХрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ) = "gm.lastOpen? .Close (); gm.lastOpen = infoWindow; рдорд╛рд░реНрдХрд░ рдХреНрд▓рд┐рдХрдб (рдПрдо);") рдПрдЧреНрдо-рдорд╛рд░реНрдХрд░ рдХреГрдкрдпрд╛ .ts рдХреЛрдб рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдпрд╣рд╛рдБ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ @menakav :
.ts рдлрд╝рд╛рдЗрд▓:
`
рдорд╛рд░реНрдХрд░рдХреНрд▓рд╛рдЗрдб
рдЕрдЧрд░ (рдпрд╣ред
рд╡рд╛рдкрд╕реА;

    if(this.infoWindowOpened !== null)
    {
        this.infoWindowOpened.close();
    }

    this.infoWindowOpened = infoWindow;
}

in .html file: (рдорд╛рд░реНрдХрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ) = "gm.lastOpen? .Close (); gm.lastOpen = infoWindow; рдорд╛рд░реНрдХрд░рдХреНрд▓рд┐рдкреНрдб (рдПрдо);" `

@menakav рдЖрдкрдХрд╛ рдХреЛрдб рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ
:(

рдореИрдВрдиреЗ рдЗрд╕ рдордВрдЪ рдХреЗ рд╕рднреА рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдпрд╣рд╛рдБ рдкреНрд░рд╛рдкреНрдд infoWindow рд╣реИ:

  clickedMarker(infoWindow, index: number) {
    ...
  }

infoWindow рд╣рдореЗрд╢рд╛ рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рднреА рдЕрдВрдХ рд╣реЛред рд╣рдореЗрд╢рд╛ рдореИрдВрдиреЗ _id = 0 рдХреЗ рд╕рд╛рде infoWindow рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ред

рдкреИрд░рд╛рдореАрдЯрд░ index рдХреНрд▓рд┐рдХ рдХрд┐рдП рдЧрдП рдорд╛рд░реНрдХрд░ рдХреА рд╕рд╣реА рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ ...ред

рдпрд╣ рдореЗрд░рд╛ html рд╣реИ:

<agm-marker *ngFor="let point of points; let i = index" [latitude]="point.latitude"
                            [longitude]="point.longitude"
                            [iconUrl]="iconUrl" (markerClick)="clickedMarker(infoWindow, i)">
<agm-info-window [disableAutoPan]="true" #infoWindow *ngIf="!isDetailMovil">
        <div class="marker__tittle">{{point.name}}</div>

рдХрд┐рд╕реА рднреА рд╡рд┐рдЪрд╛рд░ рдХреНрдпреЛрдВ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рдЬрд╛рдирдХрд╛рд░реА рдЖ рд░рд╣реА рд╣реИ?

@soyersoyer рдХрд╛ "рдХреЗрд╡рд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ" рд╕рдорд╛рдзрд╛рди рд╢рд╛рдирджрд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдХ рдмрд╛рд░ рдкреНрд░рд╛рд░рдВрднрд┐рдХ agm- рдорд╛рд░реНрдХрд░ рд╕рд░рдгреА рдХреЛ рдирдП рдорд╛рд░реНрдХрд░ рддрддреНрд╡реЛрдВ (рдЬреИрд╕реЗ ajax рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рдж) рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдЪрд╛рдирдХ, рдкрд┐рдЫрд▓реЗ infowindows рдЕрдм рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдВрдж рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рдереА?

@ agch-initial рдПрд░реЗ-рдорд╛рд░реНрдХрд░ рд╕рд░рдгреА рдХреЛ рдмрджрд▓рдиреЗ рдкрд░ рдореЗрд░реЗ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рджреЗрдЦреЗрдВред
(markerClick)="tmp=gm.lastOpen;gm.lastOpen=infoWindow;tmp?.close();"

рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди, @lauwrentius рдЙрддреНрддрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд:

*ред html

<agm-marker 
    *ngFor="let marker of markers; let i = index"
    (markerClick)="showInfoWindow(infoWindow, i)"
>
    <agm-info-window #infoWindow></agm-info-window>
</agm-marker>

* .ts

infoWindowOpened = null;

filter() {
    infoWindowOpened = null;
    // redraw the map with filtered markers
}

showInfoWindow(infoWindow, index) {
    if (this.infoWindowOpened === infoWindow) {
        return;
    }

    if (this.infoWindowOpened !== null) {
        this.infoWindowOpened.close();
    }

    this.infoWindowOpened = infoWindow;   
}

@ рдЬрд┐рдореА

рдХреНрдпрд╛ рдЖрдк рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рдЖрдк filter(){infoWindowOpened = null;} рдЪрд▓рд╛ рд░рд╣реЗ рд╣реИрдВ, рдмрд┐рдирд╛ '' рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред '' рддреНрд░реБрдЯрд┐ рдХреЗ рд░реВрдк рдореЗрдВред рдпрд╣ рдорд╛рд░реНрдХрд░ рдЖрдЗрдХрди рдРрд░реЗ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж рд╣реЛрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рджреАред
рдореИрдВрдиреЗ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛:
{

clickedMarker (рдбреЗрдЯрд╛ = рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд, рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди: рдХреЛрдИ рднреА, lat: string, lng: string) {
рдЕрдЧрд░ (рдпрд╣ред IW) {
this.IW.close ();
}
const details = data._infoWindowManager._infoWindows;
рдЕрдЧрд░ (рд╡рд┐рд╡рд░рдгред рдЖрдХрд╛рд░> 0) {
рд╡рд┐рд╡рд░рдгред
if (key.hostMarker.latitude === lat && key.hostMarker.longitude === ng) {
this.IW = рдХреБрдВрдЬреА;
}
};
}
}

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ

рдзрдиреНрдпрд╡рд╛рджред

рд╢рдирд┐рд╡рд╛рд░ рдХреЛ, 28 рдЕрдкреНрд░реИрд▓, 2018 рдХреЛ 02:04 рдмрдЬреЗ, рдХреНрд░рд┐рд╕реНрдЯрд┐рдпрди рд╣рд░реНрдирд╛рдВрдбреЗрдЬрд╝ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com
рд▓рд┐рдЦрд╛ рдерд╛:

рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░ рджреАред
рдореИрдВрдиреЗ рдХреЛрдб рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛:
[рдЕрдХреНрд╖рд╛рдВрд╢] = "рдмрд┐рдВрджреБред рдЕрдХреНрд╖рд╛рдВрд╢" [рджреЗрд╢рд╛рдВрддрд░] = "рдмрд┐рдВрджреБред рджреЗрд╢рд╛рдВрддрд░"
]
point.latitude, point.longitude) "> [рдЕрдХреНрд╖рдо рдХрд░реЗрдВ] = "рд╕рд╣реА" * ngIf = "! isDetailMovil">

clickedMarker (рдбреЗрдЯрд╛ = рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд, рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди: рдХреЛрдИ рднреА, lat: string, lng:
string) {if (рдпрд╣ред IW) {this.IW.close (); } рдХрд╛рд╕реНрдЯ рд╡рд┐рд╡рд░рдг =
data._infoWindowManager._infoWindows; рдЕрдЧрд░ (рд╡рд┐рд╡рд░рдгред рдЖрдХрд╛рд░> 0) {
рд╡рд┐рд╡рд░рдгред
key.hostMarker.longitude === lng) {this.IW = key; }}); }}

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ

-
рдЖрдк рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/SebastianM/angular-google-maps/issues/797#issuecomment-385086695 ,
рдпрд╛ рдзрд╛рдЧрд╛ рдореНрдпреВрдЯ рдХрд░реЗрдВ
https://github.com/notifications/unsubscribe-auth/AgIM0TGCgyHK-snaJdIlSZSQuq0MF1Ihks5ts4DDgaJpZM4Ln0M7
ред

рдпрд╣рд╛рдБ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рдХреЛрдгреАрдп 6 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
HTML:

<agm-marker *ngFor="let marker of markers" [latitude]="marker.latitude"[longitude]="marker.longitude" (markerClick)="markerClick(infoWindow)">
<agm-info-window #infoWindow>
</agm-info-window>
</agm-marker>

рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ:

lastSelectedInfoWindow: any;
markerClick(infoWindow: any) {
        if (infoWindow == this.lastSelectedInfoWindow) {
            return;
        }
        if (this.lastSelectedInfoWindow != null) {
         try{
            this.lastSelectedInfoWindow.close();
          } catch {} //in case if you reload your markers
        }
        this.lastSelectedInfoWindow = infoWindow;
    }

рдПрдХ рд▓рдВрдмреЗ рд╢реЛрдз рдФрд░ рдЕрд╕реНрдкрд╖реНрдЯ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рдмрд╛рдж рдЖрдЦрд┐рд░рдХрд╛рд░ рдПрдХ рдирдпрд╛ рд╕рдорд╛рдзрд╛рди рдЦреБрд▓рдиреЗ рдкрд░ рд╕реНрдкрд╖реНрдЯ рдкрд┐рдЫрд▓реЗ рдПрдЧреНрдо-рдЗрдВрдлреЛ-рд╡рд┐рдВрдбреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛

рдпрд╣ рдореЗрд░рд╛ рдШрдЯрдХ рд╣реИред html:

 <agm-map (mapClick)="close_window($event)" [fullscreenControl]='true' [mapTypeControl]='true' [latitude]="lat" [longitude]="lng" [zoom]="13" [scrollwheel]="false">
     <div *ngFor="let data of zonas">
        <agm-marker (markerClick)=select_marker(infoWindow) [latitude]="data.latitud" [longitude]="data.longitud">
           <agm-info-window #infoWindow >            
           </agm-info-window>
         </agm-marker>
      </div>
  </agm-map>

рдФрд░ рдпрд╣ рдореЗрд░рд╛ рдШрдЯрдХ рд╣реИ:

constructor(public apiService: ApiService) {}
infoWindowOpened = null
previous_info_window = null
...
close_window(){
if (this.previous_info_window != null ) {
  this.previous_info_window.close()
  }    
}

select_marker(data,infoWindow){
 if (this.previous_info_window == null)
  this.previous_info_window = infoWindow;
 else{
  this.infoWindowOpened = infoWindow
  this.previous_info_window.close()
 }
 this.previous_info_window = infoWindow
}

рдЗрд╕рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдИ рд╡рд┐рдВрдбреЛ рдЦреБрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдШрдЯрдирд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдЧрд╛ рдФрд░ рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрдЧрд╛, рдпрд╣ рднреА рдПрдХ рдЦреБрд▓реА рд╣реБрдИ рдЦрд┐рдбрд╝рдХреА рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЕрдЧрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореИрдк рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рдЧ рдореЗрдВ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдмрд╛рд╣рд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @JimmyTheNerd , рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛!

рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди, @lauwrentius рдЙрддреНрддрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд:

*ред html

<agm-marker 
    *ngFor="let marker of markers; let i = index"
    (markerClick)="showInfoWindow(infoWindow, i)"
>
    <agm-info-window #infoWindow></agm-info-window>
</agm-marker>

* .ts

infoWindowOpened = null;

filter() {
    infoWindowOpened = null;
    // redraw the map with filtered markers
}

showInfoWindow(infoWindow, index) {
    if (this.infoWindowOpened === infoWindow) {
        return;
    }

    if (this.infoWindowOpened !== null) {
        this.infoWindowOpened.close();
    }

    this.infoWindowOpened = infoWindow;   
}

рдзрдиреНрдпрд╡рд╛рдж @JimmyTheNerd , рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реАред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рдереАред рдЖрдЧреЗ рдХреЛрдИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЖрдкрдХреЗ рдпреЛрдЧрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

vamsibassetty08 picture vamsibassetty08  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ChrisDevinePimss picture ChrisDevinePimss  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

supran2811 picture supran2811  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

nthonymiller picture nthonymiller  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

PeterSisovsky picture PeterSisovsky  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ