Карта OL с низким качеством с использованием Ionic

Я пытаюсь загрузить карту OL с помощью Ionic. Когда я загружаю его с помощью «ionic serve», карта загружается в браузере нормально. Проблема в том, что когда я загружаю карту на мобильный телефон, качество карты становится очень низким. Это случилось со мной однажды в веб-приложении, когда контейнер карты изменил размер, и карта больше не загружалась. В веб-приложении я исправил это, применив функцию, которая перезагружала карту после изменения размера контейнера, примерно так:

$('#containerMap').on('change', function () {
  setTimeout(function(){ map.updateSize(); }, 500);
});

Я попытался применить ту же функцию на странице home.ts, но безуспешно. После некоторых исследований я вижу, что некоторые люди говорят, что правильный способ загрузки карты — с помощью Ionic Components, но я не могу воспроизвести примеры.

Ionic v4 и OpenLayers v5.3

Ответы, связанные с ионными компонентами:

Другой пример, которому я следовал:

Что я пытаюсь сделать (home-page.ts):

import { Component, Renderer, ViewChild } from '@angular/core';
import { NavController, Platform } from '@ionic/angular';
import { Map } from 'ol';
import { OSM, Vector as VectorSource } from 'ol/source.js';
import Point from 'ol/geom/Point.js';
import Feature from 'ol/Feature';
import { transform } from 'ol/proj.js';
import { Icon, Style } from 'ol/style.js';
import { Vector as VectorLayer } from 'ol/layer.js';
import View from 'ol/View.js';
import TileLayer from 'ol/layer/Tile.js';


@Component({
  selector: 'app-home',
  templateUrl: 'home.page.html',
  styleUrls: ['home.page.scss'],
})

export class HomePage {
    @ViewChild('map') map;
    constructor(platform: Platform, public renderer: Renderer) {
        platform.ready().then(() => {
          console.info("Platform is ready");
          setTimeout(() => {
             this.loadMap();
           }, 1000);
        })  
    }

    // I tried to load the map with this function first, but it was not loaded.
    //ionViewDidLoad() {
    //  this.loadMap();
    //}

    loadMap() {
      console.info('Hello');

      var map = new Map({
        layers: [
            new TileLayer({ 
                source: new OSM()
            })],
        target: document.getElementById('map'),
        view: new View({
          center: [0, 0],
          zoom: 3
        })
      });
      map.updateSize(); //Tried to apply the same function used in web
    }
}

Различия в приложении и Интернете: Карта OL с низким качеством с использованием Ionic

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
479
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Похоже проблема с устройством. Если я попытаюсь открыть онлайн-пример OL, например это, на мобильном устройстве, в эмуляторе или на физическом устройстве, возникнет та же проблема.

Другие вопросы по теме