μ΄κ²μ΄ κ°λ₯ν©λκΉ?
μ, μ΄μ μλ κ°μ λ¬Έμ κ° λ°μνμ΅λλ€.
λ€μμ μλνλ νλ ν¬μ
λλ€.
http://plnkr.co/edit/cwuwBN?p=preview
λλμ΄ μ κ·Όλ²μ μ¬μ©ν μ μμλ€.
λ΄ μ루μ
μ μμ€λ₯Ό λ€μ΄λ‘λνκ³ νμΌ (google-map-info-window.ts)μ λ€μ μ½λλ₯Ό ν¬ν¨ν©λλ€.
// μλμ μ΅μμ νμΌμμ΄ μμ±μ μ€μ ν©λλ€. let infoWindowId = 0; (7 ν)
let infoWindowLastContext : SebmGoogleMapInfoWindow = null;
open () : μ½μ
if (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>
νΈμ λ΄μ κ°κΈ°
<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-green-zebra AOTκ° μλνμ§ μμ΅λλ€.
'AgmMap'μ νμ 'lastOpen'μμ±μ΄ μμ΅λλ€.
λ¬΄μ¨ μΌμ΄ μΌμ΄λ μ μμ΅λκΉ?
μ μλν©λλ€. λ΄ ν νλ¦Ώ μ¬μ©μμμμ κ°μ΄ μ¬μ©μ μ§μ ν΄λ¦ κΈ°λ₯μ νΈμΆν©λλ€.
(markerClick)="gm.lastOpen?.close(); gm.lastOpen = infoWindow; markerClicked(m);"
μλ νμΈμ,
@ Martin-B μ루μ μ μ¬μ©ν΄λ μλνμ§ μμ΅λλ€.
λμμ΄ νμνμΈμ?
@ Martin-Bλ μ루μ μ κ°μ¬λ립λλ€. μΉλ£ ν¨κ³Όκ° μμ΅λλ€!
@ Martin-B μ’μ thx!
@melbouhy λΆλλ¬μ λμκ²; μΆκ° κΉλΉ‘ #infoWindow
μ <agm-info-window>
. λΉμ λ κ°μ μ€μλ₯ΌνμκΉμ?
κ³΅κ° openIW (λ°μ΄ν° = μ μλμ§ μμ) {
if (this.IW) {
this.IW.close ();
}
this.IW = data;
}
@ Martin-B μ¬μ© λ°©λ² ((markerClick) = "gm.lastOpen? .close (); gm.lastOpen = infoWindow; markerClicked (m);") agm-markerμμ .ts μ½λλ‘ λ΅μ₯ ν΄μ£ΌμΈμ
@menakav λ€μμ μλνλ μ½λμ
λλ€.
.ts νμΌ :
`
markerClicked (infoWindow) {
if (this.infoWindowOpened === infoWindow)
λ°ν;
if(this.infoWindowOpened !== null)
{
this.infoWindowOpened.close();
}
this.infoWindowOpened = infoWindow;
}
in .html file:
(markerClick) = "gm.lastOpen? .close (); gm.lastOpen = infoWindow; markerClicked (m);"`
@menakav κ·νμ μ½λκ° λλ₯Ό μν΄ μλνμ§ μμ΅λλ€.
:(
μ΄ ν¬λΌμ λͺ¨λ μ½λλ₯Ό ν
μ€νΈνλλ° λ΄ λ¬Έμ λ μ¬κΈ°μμλ°μ infoWindow
.
clickedMarker(infoWindow, index: number) {
...
}
infoWindow
λ λ΄κ° μ΄λ€ ν¬μΈνΈλ₯Ό κ°μ§κ³ μλλΌλ νμ 첫 λ²μ§Έμ
λλ€. νμ _id = 0 μΈ infoWindow
λ₯Ό λ°μμ΅λλ€.
index
λ§€κ° λ³μλ ν΄λ¦ λ λ§μ»€μ μ€μ IDλ₯Όλ°μ΅λλ€ ....
μ΄κ²μ λ΄ 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>
νμ λμΌν infoWindowκ° λμ€λ μ΄μ λ 무μμ λκΉ?
@soyersoyer μ "ν νλ¦Ώ μ μ©"μ루μ μ΄ νλ₯νκ² μλν©λλ€. κ·Έλ¬λ μ΄κΈ° agm-marker λ°°μ΄μ΄ μ λ§μ»€ μμλ‘ κ΅μ²΄λλ©΄ (μ : ajax μ λ°μ΄νΈ ν) κ°μκΈ° μ΄μ μ 보 μ°½μ΄ λ μ΄μ μλμΌλ‘ λ«νμ§ μμ΅λλ€. μ¬κΈ°μ λ¬Έμ λ 무μμΌκΉμ?
@markschmid μ΄κΈ° agm-marker λ°°μ΄μ΄ κ΅μ²΄ λ λμ ν΄κ²° λ°©λ²μ
λλ€.
(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;
}
μλ νμΈμ.
μ€λ₯λ‘ 'infoWindowOpenedλ₯Ό μ°Ύμ μ μμ'μ νμνμ§ μκ³ filter(){infoWindowOpened = null;}
λ₯Ό μ€ννλ λ°©λ²μ μ€λͺ
ν μ μμ΅λκΉ? μ΄κ²μ λ§μ»€ μμ΄μ½ λ°°μ΄μ λ³κ²½ ν νμ λ°μν©λλ€.
λλ λ¬Έμ λ₯Ό ν΄κ²°νλ€.
μ½λλ₯Ό 곡μ νμ΅λλ€.
clickedMarker (data = undefined, currentPoint : any, lat : string, lng : string) {
if (this.IW) {
this.IW.close ();
}
const μΈλΆ μ 보 = data._infoWindowManager._infoWindows;
if (details.size> 0) {
details.forEach ((μμ, ν€) => {
if (key.hostMarker.latitude === lat && key.hostMarker.longitude === lng) {
this.IW = ν€;
}
});
}
}
λλ κ·Έκ²μ΄ λμμ΄λκΈ°λ₯Ό λ°λλλ€.
κ°μ¬ν©λλ€.
2018 λ
4 μ 28 μΌ ν μμΌ 02:04, Cristian Hernandez [email protected]
μΌλ€ :
λλ λ¬Έμ λ₯Ό ν΄κ²°νλ€.
μ½λλ₯Ό 곡μ νμ΅λλ€.[latitude] = "point.latitude"[longitude] = "point.longitude"
[iconUrl] = "iconUrl"(markerClick) = "clickedMarker (infoWindow, ν¬μΈνΈ,
point.latitude, point.longitude) ">[disableAutoPan] = "true"* ngIf = "! isDetailMovil"> clickedMarker (data = undefined, currentPoint : any, lat : string, lng :
λ¬Έμμ΄) {if (this.IW) {this.IW.close (); } const μΈλΆ μ¬ν =
data._infoWindowManager._infoWindows; if (details.size> 0) {
details.forEach ((μμ, ν€) => {if (key.hostMarker.latitude === lat &&
key.hostMarker.longitude === lng) {this.IW = ν€; }}); }}λλ κ·Έκ²μ΄ λμμ΄λκΈ°λ₯Ό λ°λλλ€.
β
λΉμ μ΄ μΈκΈ λμκΈ° λλ¬Έμ μ΄κ²μ λ°κ³ μμ΅λλ€.
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ³ GitHubμμ νμΈνμΈμ.
https://github.com/SebastianM/angular-google-maps/issues/797#issuecomment-385086695 ,
λλ μ€λ λ μμκ±°
https://github.com/notifications/unsubscribe-auth/AgIM0TGCgyHK-snaJdIlSZSQuq0MF1Ihks5ts4DDgaJpZM4LQ0M7
.
μ¬κΈ° λ΄ ν΄κ²°μ±
μ΄ μμ΅λλ€. κ°λ 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>
TypeScript :
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;
}
μ€λ μ°κ΅¬μ λΆλΆλͺ ν μ루μ λμ λ§μΉ¨λ΄ μλ‘μ΄ agm-info-windowκ° μ΄λ¦΄ λ λͺ νν μ΄μ agm-info-windowμ λν νλ₯ν μ루μ μ μ»μμ΅λλ€.
μ΄κ²μ λ΄ component.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>
κ·Έλ¦¬κ³ μ΄κ²μ λ΄ component.tsμ λλ€.
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 , μλν©λλ€.
μ΄ λ¬Έμ λ μ΅κ·Ό νλμ΄ μμκΈ° λλ¬Έμ μλμΌλ‘ μ€λλ κ²μΌλ‘ νμλμμ΅λλ€. λ μ΄μ νλμ΄ λ°μνμ§ μμΌλ©΄ νμλ©λλ€. κ·νμ κΈ°μ¬μ κ°μ¬λ립λλ€.
κ°μ₯ μ μ©ν λκΈ
λ΄ ν νλ¦Ώ μ μ© μ루μ :