add marker asset and make Marker call with dummy data for proof of concept
This commit is contained in:
parent
4e46674c07
commit
82c5c3e3c0
@ -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",
|
||||||
@ -131,4 +136,4 @@
|
|||||||
"cli": {
|
"cli": {
|
||||||
"analytics": false
|
"analytics": false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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]
|
||||||
|
@ -14,6 +14,7 @@ export class MapComponent implements AfterViewInit {
|
|||||||
|
|
||||||
ngAfterViewInit(): void {
|
ngAfterViewInit(): void {
|
||||||
this.service.initMap();
|
this.service.initMap();
|
||||||
|
this.service.makeStationsWithDummyData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
BIN
projects/project-3/frontend/src/assets/bike-point.png
Normal file
BIN
projects/project-3/frontend/src/assets/bike-point.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 33 KiB |
@ -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'
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user