Source: ui/units/Map.js

import { MAP } from "../../logic/refs/map.js";

/** 
* Skapar Leaflet-kartan
*/
export class Map {

  /** 
  * @constructor
  * @param {string} - sträng-ID:et för kartelementet
  */
  constructor(nodeId) {
    this._map = L.map(nodeId);
  }
  
  /** 
  * Uppdatera Leaflet-kartan baserat på platskoordinater
  * @param {Object} loc - Innehåller information om koordinater för en vald plats
  */
  update = (loc) => {
    const { lat, lon } = loc;
    const zoom = 10;
    this._map.setView(
      [lat, lon], zoom);
    this._initTile(this._map);
    this._initMarker(this._map, loc);
  }

  /** 
  * Initiera OpenStreetMap-kartlagret
  * @private
  * @param {Object} map - Leaflet-kartobjekt
  */
  _initTile = (map) => {
    L.tileLayer(MAP.URL, {
      maxZoom: 20,
      attribution: MAP.ATTR,
    }).addTo(map);
  }

  /** 
  * Initiera kartmarkören
  * @private
  * @param {Object} map - Leaflet-kartobjekt
  * @param {Object} loc - Koordinater för vald plats
  */
  _initMarker = (map, loc) => {
    const { lat, lon } = loc;
    L.marker([lat, lon])
      .addTo(map)
      .openPopup();
  }
}