рд╣рд╛рдп, @ рд╕реЗрдмреЗрд╕реНрдЯрд┐рдпрди рдПрдоред рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдореВрд▓ рдорд╛рд░реНрдХрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SebmGoogleMapMarker рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
this.markerManager.getNativeMarker(INSTANCE_OF_SebmGoogleMapMarker).then((nativeMarker) => {
console.log('YEAH marker is here: ' + nativeMarker);
})
рдореБрдЭреЗ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛
рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ рдирд┐рд░реНрджреЗрд╢ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕реЗ sebm-google-map рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рдШреЛрдВрд╕рд▓рд╛ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдорд╛рд░реНрдХрд░рдореИрдиреЗрдЬрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрд╕ рдШрдЯрдХ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВ, рдлрд┐рд░ рдЗрд╕реЗ рдореВрд▓ рдШрдЯрдХ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рд╕рд╛рде рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
<my-parent-component>
<sebm-google-map>
<get-map-objects (markerManager)="setMarkerManager($event)">
<sebm-google-map-marker ... ></sebm-google-map-marker>
</get-map-objects>
</sebm-google-map>
</my-parent-component>
рдлрд┐рд░
import { Directive, Output, EventEmitter, AfterViewInit, ContentChildren, QueryList } from '@angular/core';
import { GoogleMapsAPIWrapper, MarkerManager, SebmGoogleMapMarker } from 'angular2-google-maps/core';
@Directive({
selector: 'get-map-objects',
})
export class GetMapObjectsDirective implements AfterViewInit {
/**
* Get native map object
*/
private _map: any = null;
@Output('map') mapChanged: EventEmitter<any> = new EventEmitter<any>();
set map(val){
this._map = val;
this.mapChanged.emit(val);
}
get map(){
return this._map;
}
/**
* Get marker manager
*/
private _markerManager: any = null;
@Output('markerManager') markerManagerChanged: EventEmitter<MarkerManager> = new EventEmitter<MarkerManager>();
set markerManager(val){
this._markerManager = val;
this.markerManagerChanged.emit(val);
}
get markerManager(){
return this._markerManager;
}
/**
* Get sebm markers
*/
private _markers: any = null;
@Output('markers') markersChanged: EventEmitter<SebmGoogleMapMarker[]> = new EventEmitter<SebmGoogleMapMarker[]>();
set markers(val){
this._markers = val;
this.markersChanged.emit(val);
}
get markers(){
return this._markers;
}
@ContentChildren(SebmGoogleMapMarker) markerChildren: QueryList<SebmGoogleMapMarker>;
constructor(
private googleMapsWrapper: GoogleMapsAPIWrapper,
private googleMarkerManager: MarkerManager
) { }
ngAfterViewInit() {
// get native map
this.googleMapsWrapper.getNativeMap().then(map => {
this.map = map;
}, error => {
throw error;
})
// get marker manager
this.markerManager = this.googleMarkerManager;
// get markers
this.markerChildren.changes.subscribe(markers => {
this.markers = markers._results;
})
}
}
рдЕрдВрдд рдореЗрдВ рдЕрдкрдиреЗ рдореВрд▓ рдШрдЯрдХ рдореЗрдВ, рдорд╛рд░реНрдХрд░ рдкреНрд░рдмрдВрдзрдХ (рдФрд░ рдорд╛рд░реНрдХрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░реЗрдВ:
setMarkerManager(markerManager: MarkerManager){
this.markerManager = markerManager;
}
/**
* Sets the markers, used by spidifier
*/
setMarkers(markers: SebmGoogleMapMarker[]){
this.markers = markers;
for(let marker of markers){
this.markerManager.getNativeMarker(marker).then(marker => {
this.overlappingMarkerSpidifier.addMarker(marker);
});
}
}
рд╣рд╛рдп @ рдореИрдХреНрд╕рдордордлреЛрд░реНрдб
рдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ,
рдмрд╣реБрдд - рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред
@рдореИрдХреНрд╕рдордордлреЛрд░реНрдб
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдФрд░ рдореБрджреНрджрд╛ рд╣реИред
рдореИрдВ рдорд╛рд░реНрдХрд░ рдХреЗ рд╣реЛрд╡рд░ рдкрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ infowindow рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред
рдХреГрдкрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рднреЗрдЬреЗрдВрдЧреЗ?
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдирдпрд╛ рдирд┐рд░реНрджреЗрд╢ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕реЗ sebm-google-map рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ рдШреЛрдВрд╕рд▓рд╛ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдорд╛рд░реНрдХрд░рдореИрдиреЗрдЬрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрд╕ рдШрдЯрдХ рдореЗрдВ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВ, рдлрд┐рд░ рдЗрд╕реЗ рдореВрд▓ рдШрдЯрдХ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рд╕рд╛рде рдЙрддреНрд╕рд░реНрдЬрд┐рдд рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рдлрд┐рд░рдирд┐рд░реНрджреЗрд╢ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
рдЕрдВрдд рдореЗрдВ рдЕрдкрдиреЗ рдореВрд▓ рдШрдЯрдХ рдореЗрдВ, рдорд╛рд░реНрдХрд░ рдкреНрд░рдмрдВрдзрдХ (рдФрд░ рдорд╛рд░реНрдХрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░реЗрдВ: