I am working with angular 4 and AGM https://angular-maps.com/ I would like to show the map, but it only shows me as in the image, if I remove it from the modal, it shows perfectly, which would be the correct way to work ?
This shows the map:
Html code:
<a class="btn btn-warning btn-flat" href="#modalMap" data-toggle="modal"><i class="fa fa-lg fa-map"></i></a>
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">{{title}}</h4>
</div>
<div class="modal-body">
<agm-map [latitude]="lat" [longitude]="lng" [zoom]="zoom">
<agm-marker [latitude]="lat" [longitude]="lng"></agm-marker>
</agm-map>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-warning" data-dismiss="modal">Close</button>
</div>
</div>
</div>
My Component:
import { Component, OnInit } from '@angular/core';
import { AngularFireDatabase, FirebaseListObservable } from 'angularfire2/database';
@Component({
selector: 'ap-map',
templateUrl: './map.component.html',
styleUrls: ['./map.component.css']
})
export class MapComponent implements OnInit {
title: string = 'My first AGM project';
lat: number = 51.678418;
lng: number = 7.809007;
zoom: number= 15;
ngOnInit() {}
}
CSS:
agm-map {
height: 300px;
width: 100%;
}
I get the same issue. After looking for a solution in @AGM project at Github i found this and worked for me:
Hi, Import following in you component.ts
import { AgmMap } from '@agm/core';
Then before your construction get ViewChild like bellow.
@ViewChild(AgmMap)
public agmMap: AgmMap
And when you show your section then called resize trigger like.
this.agmMap.triggerResize();
Source: https://github.com/SebastianM/angular-google-maps/issues/1101
I had the same problems, after searching for hours, I found tips in https://github.com/SebastianM/angular-google-maps/pull/188 . The way he used triggerResize saved my day.
In xxx.component.html:
**********************TriggerGoogleMapModal*******
<button type="button" class="btn btn-warning" (click) = "LocatePet(googleMapModal);map.triggerResize()">Locate Me</button>
**********************GoogleMapModal**************
<div >
<modal #googleMapModal >
<modal-header>
</modal-header>
<modal-content>
<agm-map #map [latitude]="lat" [longitude]="lng" [zoom]="11">
<agm-marker [latitude]="lat" [longitude]="lng" ></agm-marker>
</agm-map>
</modal-content>
<modal-footer>
<button class="btn btn-default" (click)="googleMapModal.close()">Close</button>
</modal-footer>
</modal>
</div>
In xxx.component.ts:
import {ViewChild} from '@angular/core';
import {Modal} from 'ngx-modal';
...
export class DetailPetComponent implements OnInit {
@ViewChild('map') myMap:AgmMap;
...
LocatePet(googleMapModal){
....
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With