Commit 88b2c0723793a59ea4d1f7f86d8002c5b5c5b4ee

Authored by Yarik
1 parent 4cfbf7ca

Map

angular-cli.json
... ... @@ -23,7 +23,8 @@
23 23 "../node_modules/@covalent/core/common/platform.css",
24 24 "../node_modules/@swimlane/ngx-charts/release/ngx-charts.css",
25 25 "../node_modules/ag-grid/dist/styles/ag-grid.css",
26   - "../node_modules/ag-grid/dist/styles/theme-blue.css"
  26 + "../node_modules/ag-grid/dist/styles/theme-blue.css",
  27 + "../node_modules/leaflet/dist/leaflet.css"
27 28 ],
28 29 "scripts": [
29 30 "../node_modules/hammerjs/hammer.min.js",
... ...
src/app/app.module.ts
... ... @@ -11,10 +11,12 @@ import { AppComponent } from './app.component';
11 11 import { MainComponent } from './main/main.component';
12 12 import { LoginComponent } from './login/login.component';
13 13 import { DataComponent } from './data/data.component';
14   -import { TemplatesComponent } from './templates/templates.component';;
  14 +import { TemplatesComponent } from './templates/templates.component';
15 15 import { appRoutes, appRoutingProviders } from './app.routes';
16 16 import { AgGridModule } from 'ag-grid-ng2/main';
17 17 import { ChartComponent } from '../components/chart/chart.component';
  18 +import { CandTLeafletComponent } from 'angular2.leaflet.components';
  19 +import { CandTLeafletService } from 'angular2.leaflet.components';
18 20  
19 21 import { RequestInterceptor } from '../config/interceptors/request.interceptor';
20 22  
... ... @@ -32,6 +34,7 @@ import { FlowIntensityComponent } from './data/flow-intensity/flow-intensity.com
32 34 import { RoadComponent } from './data/road/road.component';
33 35 import { RoadServiceComponent } from './data/road-service/road-service.component';
34 36 import { SettlementAddressLinkComponent } from './data/settlement-address-link/settlement-address-link.component';
  37 +import { MapComponent } from './data/map/map.component';
35 38  
36 39 // Services
37 40 import { BusStopCreateService } from '../services/bus-stop-create.service';
... ... @@ -80,6 +83,8 @@ const httpInterceptorProviders: Type<any>[] = [
80 83 CrossSectionComponent,
81 84 RoadServiceComponent,
82 85 SettlementAddressLinkComponent,
  86 + MapComponent,
  87 + CandTLeafletComponent
83 88 ], // directives, components, and pipes owned by this NgModule
84 89 imports: [
85 90 BrowserModule,
... ... @@ -135,6 +140,7 @@ const httpInterceptorProviders: Type<any>[] = [
135 140 RoadServiceCreateService,
136 141 SettlementAddressLinkService,
137 142 SettlementAddressLinkCreateService,
  143 + CandTLeafletService,
138 144 ], // additional providers needed for this module
139 145 entryComponents: [ ],
140 146 bootstrap: [ AppComponent ],
... ...
src/app/app.routes.ts
... ... @@ -14,6 +14,7 @@ import { FlowIntensityComponent } from './data/flow-intensity/flow-intensity.com
14 14 import { RoadComponent } from './data/road/road.component';
15 15 import { RoadServiceComponent } from './data/road-service/road-service.component';
16 16 import { SettlementAddressLinkComponent } from './data/settlement-address-link/settlement-address-link.component';
  17 +import { MapComponent } from './data/map/map.component';
17 18  
18 19 const routes: Routes = [
19 20 {path: 'login', component: LoginComponent},
... ... @@ -30,6 +31,7 @@ const routes: Routes = [
30 31 {path: 'road-service', component: RoadServiceComponent},
31 32 {path: 'road-to-category', component: RoadToCategoryComponent},
32 33 {path: 'settlement-address-link', component: SettlementAddressLinkComponent},
  34 + {path: 'map', component: MapComponent},
33 35 ]},
34 36 ]},
35 37 ];
... ...
src/app/data/map/map.component.html 0 → 100644
  1 +<div id="mapId">
  2 +
  3 +</div>
0 4 \ No newline at end of file
... ...
src/app/data/map/map.component.ts 0 → 100644
  1 +import { Component, ViewEncapsulation, OnInit } from '@angular/core';
  2 +import * as L from 'leaflet';
  3 +
  4 +@Component({
  5 + // tslint:disable-next-line:component-selector
  6 + selector: 'map-grid',
  7 + templateUrl: 'map.component.html',
  8 + styleUrls: ['map.scss'],
  9 + encapsulation: ViewEncapsulation.None,
  10 +})
  11 +export class MapComponent implements OnInit {
  12 + public map: L.Map;
  13 + public icon: L.Icon;
  14 + public markers: L.Marker[] = [];
  15 + public circles: L.Circle[] = [];
  16 + public polygon: L.Polygon[] = [];
  17 + ngOnInit(): void {
  18 + this.icon = L.icon({
  19 + iconUrl: '/assets/icons/marker-icon.png',
  20 + iconSize: [25, 41], // size of the icon
  21 + popupAnchor: [-3, -76], // point from which the popup should open relative to the iconAnchor
  22 + });
  23 + this.map = L.map('mapId').setView([51.505, -0.09], 13);
  24 + L.tileLayer('https://a.tile.openstreetmap.org/{z}/{x}/{y}.png', {
  25 + maxZoom: 18,
  26 + }).addTo(this.map);
  27 + let x: number = 51.5;
  28 + let y: number = -0.09;
  29 + for (let i: number = 0; i < 10; i++) {
  30 + this.markers.push(L.marker([x + i, y + i], {
  31 + icon: this.icon,
  32 + }).addTo(this.map));
  33 + }
  34 + this.markers.forEach(function(i: L.Marker, y: number, z: L.Marker[]): void {
  35 + i.bindPopup('Popup from element #' + y);
  36 + i.bindTooltip('Popup from element #' + y);
  37 + });
  38 + this.markers.push(L.marker([51.5, -0.09], {
  39 + icon: this.icon,
  40 + }).addTo(this.map));
  41 + this.circles.push(L.circle([51.508, -0.11], {
  42 + color: 'red',
  43 + fillColor: '#f03',
  44 + fillOpacity: 0.5,
  45 + radius: 500,
  46 + }).addTo(this.map));
  47 + this.polygon.push(L.polygon([
  48 + [51.509, -0.08],
  49 + [51.503, -0.06],
  50 + [51.51, -0.047],
  51 + ]).addTo(this.map));
  52 + };
  53 +}
... ...
src/app/data/map/map.scss 0 → 100644
  1 +.toolbar button {
  2 + margin: 2px;
  3 + padding: 0;
  4 +}
  5 +
  6 +#mapId {
  7 + height: 100%;
  8 +}
  9 +
  10 +.leaflet-container {
  11 + width: 100%;
  12 + height: 100%;
  13 +}
  14 +
  15 +.map-container {
  16 + height: 100%;
  17 +}
  18 +
  19 +leaf-element {
  20 + width: 100%;
  21 +}
  22 +
  23 +.leaflet-pane {
  24 + z-index: 0 !important;
  25 +}
0 26 \ No newline at end of file
... ...
src/assets/icons/marker-icon.png 0 → 100644

1.43 KB

src/index.html
1 1 <!doctype html>
2 2 <html>
  3 +
3 4 <head>
4   - <meta charset="utf-8">
5   - <title>Covalent Quickstart</title>
6   - <base href="/">
7   - <link rel="icon" type="image/x-icon" href="favicon.ico">
8   - <link rel="icon" type="image/png" href="favicon.png" sizes="32x32">
9   - <meta name="theme-color" content="#000000">
10   - <meta name="viewport" content="width=device-width, initial-scale=1">
  5 + <meta charset="utf-8">
  6 + <title>Covalent Quickstart</title>
  7 + <base href="/">
  8 + <link rel="icon" type="image/x-icon" href="favicon.ico">
  9 + <link rel="icon" type="image/png" href="favicon.png" sizes="32x32">
  10 + <meta name="theme-color" content="#000000">
  11 + <meta name="viewport" content="width=device-width, initial-scale=1">
11 12 </head>
  13 +
12 14 <body>
13   - <qs-app>
14   - <div style="padding: 20%;text-align:center;">
15   - <img src="assets/icons/covalent.svg" width="200">
16   - <div>Quickstart Loading...</div>
17   - </div>
18   - </qs-app>
  15 + <qs-app>
  16 + <div style="padding: 20%;text-align:center;">
  17 + <img src="assets/icons/covalent.svg" width="200">
  18 + <div>Quickstart Loading...</div>
  19 + </div>
  20 + </qs-app>
19 21 </body>
20   -</html>
  22 +
  23 +</html>
21 24 \ No newline at end of file
... ...