File

src/app/modals/modal-mapa/modal-mapa.page.ts

Implements

OnInit

Metadata

selector app-modal-mapa
styleUrls ./modal-mapa.page.scss
templateUrl ./modal-mapa.page.html

Index

Properties
Methods

Constructor

constructor(modalController: ModalController, navParams: NavParams)

Recupera del navParams los parámetros del título y las coordenadas de la localización

Parameters :
Name Type Optional Description
modalController ModalController No

Controlador de la ventana modal

navParams NavParams No

Módulo para recuparar parámetros mandados desde la página padre

Methods

cerrar
cerrar()

Cierra el modal

Returns : void
ionViewDidEnter
ionViewDidEnter()

Se ejecuta antes de entrar a la página

Returns : void
loadmap
loadmap()

Inicializa el mapa con todos los atributos necesarios. Posiciona la vista en las coordenadas de la clase y marca un zoom para que no se quede lejos el mapa. Posiciona el marcador en las mismas coordenadas y le cambia el icono al recogido anteriormente

Returns : void
ngOnInit
ngOnInit()
Returns : void

Properties

icon
Default value : leaflet.icon({ iconUrl: '../../assets/tennis.png', iconSize: [40, 40] })
map
Type : any
mapax
Type : any
mapay
Type : any
mapContainer
Type : ElementRef
Decorators :
@ViewChild('map')
titulo
Type : any
import {Component, ElementRef, OnInit, ViewChild} from '@angular/core';
import {ModalController, NavParams} from '@ionic/angular';
import leaflet from 'leaflet';

@Component({
    selector: 'app-modal-mapa',
    templateUrl: './modal-mapa.page.html',
    styleUrls: ['./modal-mapa.page.scss'],
})
export class ModalMapaPage implements OnInit {

    // Contenedor del mapa
    @ViewChild('map') mapContainer: ElementRef;
    map: any;

    mapax: any;
    mapay: any;
    titulo: any;


    /**
     * Recupera del navParams los parámetros del título y las coordenadas de la localización
     * @param modalController Controlador de la ventana modal
     * @param navParams Módulo para recuparar parámetros mandados desde la página padre
     */
    constructor(private modalController: ModalController,
                private navParams: NavParams) {
        this.titulo = this.navParams.get('titulo');
        this.mapax = this.navParams.get('mapax');
        this.mapay = this.navParams.get('mapay');


    }

    // Guardamos el icono que utilizaremos de marcador en el mapa
    icon = leaflet.icon({
        iconUrl: '../../assets/tennis.png',
        iconSize: [40, 40]
    });

    /**
     * Se ejecuta antes de entrar a la página
     */
    ionViewDidEnter() {
        this.loadmap();
    }


    /**
     * Inicializa el mapa con todos los atributos necesarios.
     * Posiciona la vista en las coordenadas de la clase y marca un zoom para que no se quede
     * lejos el mapa.
     * Posiciona el marcador en las mismas coordenadas y le cambia el icono al recogido anteriormente
     */
    loadmap() {
        this.map = leaflet.map('map').fitWorld();
        leaflet.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
            attributions: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors,' +
                ' <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>',
            maxZoom: 25
        }).addTo(this.map);
        this.map.setView([this.mapax, this.mapay], 16);
        leaflet.marker([this.mapax, this.mapay], {icon: this.icon}).addTo(this.map).bindPopup(this.titulo);

    }

    /**
     * Cierra el modal
     */
    cerrar() {
        this.modalController.dismiss();
    }

    ngOnInit() {
    }


}
<link href="https://unpkg.com/leaflet@1.1.0/dist/leaflet.css" rel="stylesheet">
<ion-header>
  <ion-toolbar color="primary">
    <ion-title><ion-icon style="font-size:30px" name="arrow-round-back" (click)="cerrar()"></ion-icon></ion-title>
  </ion-toolbar>
</ion-header>

<ion-content padding>

  <div id="map" style="width:100%; height:100%;"></div>

</ion-content>

./modal-mapa.page.scss

body {
  padding: 0;
  margin: 0;
}
html, body, #map {
  height: 100%;
  width: 100vw;
}
Legend
Html element
Component
Html element with directive

result-matching ""

    No results matching ""