add marker asset and make Marker call with dummy data for proof of concept

This commit is contained in:
tim-herbst 2020-12-19 15:50:36 +01:00 committed by Tim Herbst
parent 4e46674c07
commit 82c5c3e3c0
6 changed files with 66 additions and 6 deletions

View File

@ -90,7 +90,12 @@
"karmaConfig": "karma.conf.js", "karmaConfig": "karma.conf.js",
"assets": [ "assets": [
"src/favicon.ico", "src/favicon.ico",
"src/assets" "src/assets",
{
"glob": "**/*",
"input": "node_modules/leaflet/dist/images/",
"output": "./assets"
}
], ],
"styles": [ "styles": [
"./node_modules/@angular/material/prebuilt-themes/purple-green.css", "./node_modules/@angular/material/prebuilt-themes/purple-green.css",

View File

@ -9,6 +9,7 @@ import {MatToolbarModule} from '@angular/material/toolbar';
import {FlexLayoutModule} from '@angular/flex-layout'; import {FlexLayoutModule} from '@angular/flex-layout';
import {MatIconModule} from '@angular/material/icon'; import {MatIconModule} from '@angular/material/icon';
import {MatButtonModule} from '@angular/material/button'; import {MatButtonModule} from '@angular/material/button';
import {HttpClientModule} from '@angular/common/http';
@NgModule({ @NgModule({
declarations: [ declarations: [
@ -22,7 +23,8 @@ import {MatButtonModule} from '@angular/material/button';
MatToolbarModule, MatToolbarModule,
MatIconModule, MatIconModule,
MatButtonModule, MatButtonModule,
FlexLayoutModule FlexLayoutModule,
HttpClientModule
], ],
providers: [], providers: [],
bootstrap: [AppComponent] bootstrap: [AppComponent]

View File

@ -14,6 +14,7 @@ export class MapComponent implements AfterViewInit {
ngAfterViewInit(): void { ngAfterViewInit(): void {
this.service.initMap(); this.service.initMap();
this.service.makeStationsWithDummyData();
} }

View File

@ -1,5 +1,33 @@
import { Injectable } from '@angular/core'; import {Injectable} from '@angular/core';
import * as L from 'leaflet'; import * as L from 'leaflet';
import {HttpClient} from '@angular/common/http';
import {environment} from '../../environments/environment';
const dummyData = [
{
id: 'BikePoints_1',
url: '/Place/BikePoints_1',
commonName: 'River Street , Clerkenwell',
placeType: 'BikePoint',
lat: 51.529163,
lon: -0.10997
},
{
id: 'BikePoints_2',
url: '/Place/BikePoints_2',
commonName: 'Phillimore Gardens, Kensington',
placeType: 'BikePoint',
lat: 51.499606,
lon: -0.197574
}
];
const createIcon = L.icon({
iconUrl: '../../assets/bike-point.png',
iconSize: [60, 60],
iconAnchor: [30, 60],
popupAnchor: [0, -53]
});
@Injectable({ @Injectable({
providedIn: 'root' providedIn: 'root'
@ -7,7 +35,8 @@ import * as L from 'leaflet';
export class MapService { export class MapService {
private map; private map;
constructor() { } constructor(private client: HttpClient) {
}
public initMap(): void { public initMap(): void {
this.map = L.map('map').setView([51.509865, -0.118092], 13); this.map = L.map('map').setView([51.509865, -0.118092], 13);
@ -17,4 +46,26 @@ export class MapService {
maxZoom: 19 maxZoom: 19
})); }));
} }
public makeStationsWithDummyData(): void {
for (const station of dummyData) {
L.marker([station.lat, station.lon], {icon: createIcon}).addTo(this.map);
}
}
public makeStationMarkers(): void {
this.fetchStationGeoData().then((data) => {
for (const station of data.features) {
const lat = station.geometry.coordinates[0];
const lon = station.geometry.coordinates[1];
L.marker([lon, lat]).addTo(this.map);
}
}).catch((error) => {
console.log('something went wrong: ' + JSON.stringify(error));
});
}
private async fetchStationGeoData(): Promise<any> {
return await this.client.get(environment.apiUrl).toPromise();
}
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@ -3,7 +3,8 @@
// The list of file replacements can be found in `angular.json`. // The list of file replacements can be found in `angular.json`.
export const environment = { export const environment = {
production: false production: false,
apiUrl: 'http://dummyUrl:1111'
}; };
/* /*