【问题标题】:angular2-google-maps Modal issueangular2-google-maps 模态问题
【发布时间】:2016-10-26 18:04:28
【问题描述】:

我正在尝试让我的 Google 地图模式与 angular2-google-maps 项目一起使用。

我看到当您想将地图放入模式中时,您必须触发调整大小事件才能正常工作。但现在我的问题是地图的位置:我不能将它集中在初始坐标上。

这是我的文件:

Google 地图容器组件

@Component({
    selector: 'schools-modal',
    templateUrl: 'schools-modal.component.html',
})
export class SchoolsModalComponent implements OnInit{

@ViewChild(GoogleMapComponent)googleMapComponent: GoogleMapComponent;

private certificate: Certificate;
private point: GraphPoint;
private schools_list: School[];

constructor(private rootNode: ElementRef,
            private certificates: CertificatesStore,
            private points: GraphPointsStore,
            private schools: SchoolsStore,
            private events: EventsStore) {
    this.events.openSchoolsModal.subscribe(() => {
        this.show();
    });

    this.points.current.subscribe(point => {
        this.point = point;
    });

    this.certificates.current.subscribe(certificate => {
        this.certificate = certificate;

        if (certificate) {
            this.certificates
                .getSchoolsIdsFor(certificate)
                .subscribe(ids => {
                    this.schools_list = this.schools.getByIdList(ids);
                });
        }
    });
}

ngOnInit() {
    $(this.rootNode.nativeElement).on('shown.bs.modal', () => {
        this.googleMapComponent.resize();
        $(this).off();
    });
}

initMapMakers(): any {
    return this.schools_list.reduce((all, item:School, index) => {
        all.push({
            id: index ,
            latitude: item.latitude,
            longitude: item.longitude
        });
        return all;
    }, []);
}

show(): void {
    $(this.rootNode.nativeElement).modal('show');
}

Google Maps Wrapper 组件

@Component({
    selector: 'google-map',
    templateUrl: 'google-map.component.html'
})
export class GoogleMapComponent implements OnInit {

    @ViewChild(SebmGoogleMap) sebmGoogleMap: SebmGoogleMap;

    private readonly DEFAULT_VALUES: any = {
        zoom: 5,
        lat: 46.227638,
        lng: 2.213749,
    };

    private zoom: number;
    private lat: number;
    private lng: number;

    constructor() {
        this.reset();
    }

    ngOnInit() {
        this.sebmGoogleMap.centerChange.subscribe((obj) => {
            console.log(obj.lat);
            console.log(obj.lng);
        })
    }


    reset() {
        this.zoom = this.DEFAULT_VALUES.zoom;
        this.lat = this.DEFAULT_VALUES.lat;
        this.lng = this.DEFAULT_VALUES.lng;
    }

    resize(): void {
        this.sebmGoogleMap.triggerResize();
    }
}

我注意到当触发调整大小时,我的初始坐标会更改为我从未输入过的坐标...

任何帮助将不胜感激!谢谢!

【问题讨论】:

    标签: javascript google-maps angular google-maps-api-3 typescript


    【解决方案1】:

    如果你使用:

    this.sebmGoogleMap.triggerResize().then(res => { 
       (set coordinates here) 
    });
    

    您在“then”调用中设置的坐标将在地图调整大小后发生。

    我遇到了同样的问题,它对我有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-10
      • 2015-06-24
      • 2015-01-28
      • 2017-04-08
      • 2018-04-16
      • 2019-05-14
      相关资源
      最近更新 更多