В моем приложении загружено несколько карт, моя ошибка, которая не возникает на страницах, заключается в том, что при первой загрузке страницы она не загружает карты, но когда я выполняю infinitescroll, если он загружает карты, эта страница загружается маршрутизатором Angular, который перенаправляет ее.
Сначала я загружаю информацию в ngOnInit (): void {}, и, наконец, эта функция выполняется для загрузки карт.
Я пытался передать информацию ему разными способами с navParams, и он все еще не работает, я также установил время setTimeout basatante на случай, если пришло время для загрузки, но он все еще не работает
Это мой код
async getPublications(page, adding = false) {
const loading = await this.loading.create();
loading.present();
this._publicationService.getPublicationsUser(this.token,this.id ,page).subscribe(
response => {
console.log(response);
if (response.publications) {
this.coords = [];
this.total = response.total_items;
this.pages = response.pages;
this.items_per_page = response.items_per_page
if (!adding) {
this.publications = response.publications
for (let i = 0; i < this.publications.length; i++) {
let cord = this.publications[i].location.split(',');
let object = {
lat: cord[0], lng: cord[1], zoom: 15
}
this.coords.push(object);
}
setTimeout(() => {
this.initialize();
loading.dismiss();
}, 3000);
} else {
var arrayA = this.publications;
var arrayB = response.publications;
this.publications = arrayA.concat(arrayB);
console.log(this.publications)
for (let i = 0; i < this.publications.length; i++) {
let cord = this.publications[i].location.split(',');
let object = {
lat: cord[0], lng: cord[1], zoom: 15
}
this.coords.push(object);
}
setTimeout(() => {
this.initialize();
loading.dismiss();
}, 3000);
}
} else {
loading.dismiss();
}
},
async error => {
}
)
}
initialize() {
for (var i = 0, length = this.coords.length; i < length; i++) {
var point = this.coords[i];
var latlng = new google.maps.LatLng(point.lat, point.lng);
this.maps[i] = new google.maps.Map(document.getElementById('map' + (i)), {
zoom: point.zoom,
center: latlng,
zoomControl: false,
mapTypeControl: false,
scaleControl: false,
streetViewControl: false,
rotateControl: false,
fullscreenControl: false,
gestureHandling: 'none',
});
this.markers[i] = new google.maps.Marker({
position: latlng,
map: this.maps[i]
});
}
}
<div id="{{'map'+i}}" style="max-width:500px; height:300px"></div>