1- import { Component , Directive , Input , Output , ContentChild , ElementRef , ViewChild , SimpleChange , NgZone , Provider , EventEmitter } from 'angular2/angular2' ;
1+ import { Component , Directive , Provider , Input , Output , Renderer , ContentChildren , ElementRef , SimpleChange , NgZone , EventEmitter , QueryList , provide } from 'angular2/angular2' ;
22import { GoogleMapsAPIWrapper , GoogleMapsAPIWrapperFactory } from '../services/google_maps_api_wrapper' ;
3+ import { SebmGoogleMapMarker } from './google_map_marker' ;
4+ import { MarkerManager } from '../services/marker_manager' ;
35
46/**
57 * Todo: add docs
68 */
79@Component ( {
810 selector : 'sebm-google-map' ,
9- providers : [ GoogleMapsAPIWrapperFactory ] ,
11+ providers : [ GoogleMapsAPIWrapperFactory , MarkerManager ] ,
12+ viewProviders : [ MarkerManager ] ,
1013 styles : [ `
11- .sebm-google-map-container {
12- width: 100%;
14+ .sebm-google-map-container-inner {
15+ width: inherit;
16+ height: inherit;
1317 display: block;
1418 }
1519 ` ] ,
1620 template : `
17- <div class="sebm-google-map-container"></div>
21+ <div class="sebm-google-map-container-inner "></div>
1822 <ng-content></ng-content>
1923 `
2024} )
@@ -24,8 +28,9 @@ export class SebmGoogleMap {
2428 private _zoom : number = 8 ;
2529 private _mapsWrapper : GoogleMapsAPIWrapper ;
2630
27- constructor ( private elem : ElementRef , private _zone : NgZone , mapsFactory : GoogleMapsAPIWrapperFactory ) {
28- this . _initMapInstance ( elem . nativeElement . querySelector ( '.sebm-google-map-container' ) , mapsFactory ) ;
31+ constructor ( private elem : ElementRef , private _zone : NgZone , mapsFactory : GoogleMapsAPIWrapperFactory , renderer : Renderer ) {
32+ renderer . setElementClass ( elem , 'sebm-google-map-container' , true ) ;
33+ this . _initMapInstance ( elem . nativeElement . querySelector ( '.sebm-google-map-container-inner' ) , mapsFactory ) ;
2934 }
3035
3136 private _initMapInstance ( el : HTMLElement , mapsFactory : GoogleMapsAPIWrapperFactory ) {
@@ -36,8 +41,10 @@ export class SebmGoogleMap {
3641
3742 @Input ( )
3843 set zoom ( value : number | string ) {
39- this . _zoom = this . _convertToDecimal ( value ) ;
40- this . _mapsWrapper . setZoom ( this . _zoom ) ;
44+ this . _zoom = this . _convertToDecimal ( value ) ;
45+ if ( typeof this . _zoom === 'number' ) {
46+ this . _mapsWrapper . setZoom ( this . _zoom ) ;
47+ }
4148 }
4249
4350 @Input ( )
@@ -55,11 +62,16 @@ export class SebmGoogleMap {
5562 private _convertToDecimal ( value : string | number ) : number {
5663 if ( typeof value === 'string' ) {
5764 return parseFloat ( value ) ;
65+ } else if ( typeof value === 'number' ) {
66+ return < number > value ;
5867 }
59- return < number > value ;
68+ return null ;
6069 }
6170
6271 private _updateCenter ( ) {
72+ if ( typeof this . _latitude !== 'number' || typeof this . _longitude !== 'number' ) {
73+ return ;
74+ }
6375 this . _mapsWrapper . setCenter ( {
6476 lat : this . _latitude ,
6577 lng : this . _longitude ,
0 commit comments