Re-implement and fix detail side section
This commit is contained in:
@@ -1,8 +1,15 @@
|
|||||||
<div class="map-wrapper">
|
<div class="map-wrapper">
|
||||||
<div
|
<div
|
||||||
class="map-container"
|
class="map-container"
|
||||||
|
[ngClass]="isFullscreen ? 'map-fullscreen' : 'map-details'"
|
||||||
leaflet
|
leaflet
|
||||||
[leafletOptions]="options"
|
[leafletOptions]="options"
|
||||||
(leafletMapReady)="onMapReady($event)"
|
(leafletMapReady)="onMapReady($event)"
|
||||||
></div>
|
></div>
|
||||||
|
@if (!isFullscreen && details) {
|
||||||
|
<div class="details">
|
||||||
|
<h2>{{ details.name }}</h2>
|
||||||
|
<p>{{ details.building }}</p>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
.map-container {
|
.map-container {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
position: absolute;
|
position: fixed;
|
||||||
top: 54px;
|
top: 54px;
|
||||||
height: calc(100vh - 54px);
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -13,14 +13,14 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.map-details {
|
.map-details {
|
||||||
left: 10%;
|
left: 25%;
|
||||||
width: 90%;
|
width: 75%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.details {
|
.details {
|
||||||
position: absolute;
|
position: fixed;
|
||||||
top: 54px;
|
top: 54px;
|
||||||
left: 0;
|
left: 25px;
|
||||||
width: 10%;
|
width: 25%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Component, signal, OnInit } from '@angular/core';
|
import { Component, signal, OnInit, ChangeDetectorRef } from '@angular/core';
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
import { LeafletModule } from '@bluehalo/ngx-leaflet';
|
import { LeafletModule } from '@bluehalo/ngx-leaflet';
|
||||||
import { center } from '@turf/turf';
|
import { center } from '@turf/turf';
|
||||||
@@ -19,6 +19,7 @@ export class OSMMap implements OnInit {
|
|||||||
|
|
||||||
protected readonly title = signal('HKA-OSM');
|
protected readonly title = signal('HKA-OSM');
|
||||||
map?: L.Map;
|
map?: L.Map;
|
||||||
|
details?: D.Details;
|
||||||
|
|
||||||
osm?: L.TileLayer;
|
osm?: L.TileLayer;
|
||||||
options: L.MapOptions = {};
|
options: L.MapOptions = {};
|
||||||
@@ -27,7 +28,8 @@ export class OSMMap implements OnInit {
|
|||||||
isFullscreen = true;
|
isFullscreen = true;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private overpass: Overpass
|
private overpass: Overpass,
|
||||||
|
private cdr: ChangeDetectorRef
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
@@ -73,6 +75,7 @@ export class OSMMap implements OnInit {
|
|||||||
this.map?.setView(this.getCenter(feature.geometry), 20);
|
this.map?.setView(this.getCenter(feature.geometry), 20);
|
||||||
this.buildingLayer = this.queryBuildings(feature.properties.name);
|
this.buildingLayer = this.queryBuildings(feature.properties.name);
|
||||||
this.buildingLayer.addTo(this.map!);
|
this.buildingLayer.addTo(this.map!);
|
||||||
|
this.details = new D.Details(feature.properties.name, feature.properties.building)
|
||||||
} else {
|
} else {
|
||||||
this.map?.setView(this.getCenter(), 18);
|
this.map?.setView(this.getCenter(), 18);
|
||||||
if (this.buildingLayer) {
|
if (this.buildingLayer) {
|
||||||
@@ -81,6 +84,7 @@ export class OSMMap implements OnInit {
|
|||||||
}
|
}
|
||||||
console.log('Set isFullscreen to:', this.isFullscreen);
|
console.log('Set isFullscreen to:', this.isFullscreen);
|
||||||
console.log('Clicked on feature:', feature.properties?.name);
|
console.log('Clicked on feature:', feature.properties?.name);
|
||||||
|
this.cdr.detectChanges();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
if (feature.properties && feature.properties.name) {
|
if (feature.properties && feature.properties.name) {
|
||||||
|
|||||||
Reference in New Issue
Block a user