From 1b2b7e42b1304bc9146289d43f52be7d0d690ac3 Mon Sep 17 00:00:00 2001 From: nixa <4dmitr@gmail.com> Date: Mon, 2 May 2016 18:17:54 +0300 Subject: [PATCH] leaflet maps --- config/webpack.common.js | 1 + package.json | 1 + .../googleMaps/googleMaps.component.ts | 7 ++-- .../components/googleMaps/googleMaps.html | 2 +- .../maps/components/leafletMaps/index.ts | 1 + .../leafletMaps/leafletMaps.component.ts | 33 ++++++++++++++++++ .../components/leafletMaps/leafletMaps.html | 3 ++ .../components/leafletMaps/leafletMaps.scss | 4 +++ src/app/pages/maps/maps.component.ts | 6 ++++ src/app/theme/sidebar/sidebar.service.ts | 4 +++ .../theme/vendor/leaflet/marker-icon-2x.png | Bin 0 -> 4033 bytes .../img/theme/vendor/leaflet/marker-icon.png | Bin 0 -> 1747 bytes src/custom-typings.d.ts | 1 + 13 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 src/app/pages/maps/components/leafletMaps/index.ts create mode 100644 src/app/pages/maps/components/leafletMaps/leafletMaps.component.ts create mode 100644 src/app/pages/maps/components/leafletMaps/leafletMaps.html create mode 100644 src/app/pages/maps/components/leafletMaps/leafletMaps.scss create mode 100644 src/assets/img/theme/vendor/leaflet/marker-icon-2x.png create mode 100644 src/assets/img/theme/vendor/leaflet/marker-icon.png diff --git a/config/webpack.common.js b/config/webpack.common.js index eac5c18e..22ce1eb5 100644 --- a/config/webpack.common.js +++ b/config/webpack.common.js @@ -230,6 +230,7 @@ module.exports = { "Tether": 'tether', "window.Tether": "tether", "GoogleMapsLoader": "google-maps", + "L": "leaflet" }) ], diff --git a/package.json b/package.json index 702d7512..1db9e048 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "font-awesome-sass-loader": "^1.0.1", "google-maps": "^3.2.1", "jquery": "^2.2.3", + "leaflet-map": "^0.2.1", "normalize.css": "^4.1.1", "rxjs": "5.0.0-beta.2", "tether": "^1.2.4", diff --git a/src/app/pages/maps/components/googleMaps/googleMaps.component.ts b/src/app/pages/maps/components/googleMaps/googleMaps.component.ts index e04e6e67..e1aaa904 100644 --- a/src/app/pages/maps/components/googleMaps/googleMaps.component.ts +++ b/src/app/pages/maps/components/googleMaps/googleMaps.component.ts @@ -15,12 +15,11 @@ export class GoogleMaps { constructor(private _elementRef:ElementRef) { } - ngOnInit() { - } - ngAfterViewInit() { + let el = DOM.querySelector(this._elementRef.nativeElement, '.google-maps'); + GoogleMapsLoader.load((google) => { - new google.maps.Map(DOM.querySelector(this._elementRef.nativeElement, '.google-maps'), { + new google.maps.Map(el, { center: new google.maps.LatLng(44.5403, -78.5463), zoom: 8, mapTypeId: google.maps.MapTypeId.ROADMAP diff --git a/src/app/pages/maps/components/googleMaps/googleMaps.html b/src/app/pages/maps/components/googleMaps/googleMaps.html index 2eb639e1..eccdc49f 100644 --- a/src/app/pages/maps/components/googleMaps/googleMaps.html +++ b/src/app/pages/maps/components/googleMaps/googleMaps.html @@ -1,3 +1,3 @@ - +
diff --git a/src/app/pages/maps/components/leafletMaps/index.ts b/src/app/pages/maps/components/leafletMaps/index.ts new file mode 100644 index 00000000..b187e3c6 --- /dev/null +++ b/src/app/pages/maps/components/leafletMaps/index.ts @@ -0,0 +1 @@ +export * from './leafletMaps.component'; diff --git a/src/app/pages/maps/components/leafletMaps/leafletMaps.component.ts b/src/app/pages/maps/components/leafletMaps/leafletMaps.component.ts new file mode 100644 index 00000000..2832a98f --- /dev/null +++ b/src/app/pages/maps/components/leafletMaps/leafletMaps.component.ts @@ -0,0 +1,33 @@ +import {Component, ViewEncapsulation, ElementRef} from 'angular2/core'; +import {BaCard} from '../../../../theme'; +import {DOM} from "angular2/src/platform/dom/dom_adapter"; + +@Component({ + selector: 'google-maps', + pipes: [], + providers: [], + // otherwise maps won't work + encapsulation: ViewEncapsulation.None, + styles: [require('leaflet/dist/leaflet.css'), require('./leafletMaps.scss')], + directives: [BaCard], + template: require('./leafletMaps.html'), +}) +export class LeafletMaps { + + constructor(private _elementRef:ElementRef) { + } + + ngAfterViewInit() { + let el = DOM.querySelector(this._elementRef.nativeElement, '.leaflet-maps'); + + L.Icon.Default.imagePath = 'assets/img/theme/vendor/leaflet'; + var map = L.map(el).setView([51.505, -0.09], 13); + L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', { + attribution: '© OpenStreetMap contributors' + }).addTo(map); + + L.marker([51.5, -0.09]).addTo(map) + .bindPopup('A pretty CSS3 popup.
Easily customizable.') + .openPopup(); + } +} diff --git a/src/app/pages/maps/components/leafletMaps/leafletMaps.html b/src/app/pages/maps/components/leafletMaps/leafletMaps.html new file mode 100644 index 00000000..116ed798 --- /dev/null +++ b/src/app/pages/maps/components/leafletMaps/leafletMaps.html @@ -0,0 +1,3 @@ + +
+
diff --git a/src/app/pages/maps/components/leafletMaps/leafletMaps.scss b/src/app/pages/maps/components/leafletMaps/leafletMaps.scss new file mode 100644 index 00000000..1c57a98f --- /dev/null +++ b/src/app/pages/maps/components/leafletMaps/leafletMaps.scss @@ -0,0 +1,4 @@ +.leaflet-maps { + //TODO: hotfix + height: 320px; +} diff --git a/src/app/pages/maps/maps.component.ts b/src/app/pages/maps/maps.component.ts index 5224b98e..5f6ee391 100644 --- a/src/app/pages/maps/maps.component.ts +++ b/src/app/pages/maps/maps.component.ts @@ -2,6 +2,7 @@ import {Component, ViewEncapsulation} from 'angular2/core'; import {RouteConfig} from 'angular2/router'; import {GoogleMaps} from './components/googleMaps'; +import {LeafletMaps} from "./components/leafletMaps"; @Component({ selector: 'maps', @@ -17,6 +18,11 @@ import {GoogleMaps} from './components/googleMaps'; path: '/google-maps', useAsDefault: true }, + { + name: 'LeafletMaps', + component: LeafletMaps, + path: '/leaflet-maps', + }, ]) export class Maps { diff --git a/src/app/theme/sidebar/sidebar.service.ts b/src/app/theme/sidebar/sidebar.service.ts index 2bbdddac..e90444bf 100644 --- a/src/app/theme/sidebar/sidebar.service.ts +++ b/src/app/theme/sidebar/sidebar.service.ts @@ -31,6 +31,10 @@ export class SidebarService { { title: 'Google Maps', name: 'GoogleMaps', + }, + { + title: 'Leaflet Maps', + name: 'LeafletMaps', } ] }, diff --git a/src/assets/img/theme/vendor/leaflet/marker-icon-2x.png b/src/assets/img/theme/vendor/leaflet/marker-icon-2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0015b6495fa458ad39d51cb4b913430016f48d33 GIT binary patch literal 4033 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 literal 0 HcmV?d00001 diff --git a/src/custom-typings.d.ts b/src/custom-typings.d.ts index 035c854b..de5e3777 100644 --- a/src/custom-typings.d.ts +++ b/src/custom-typings.d.ts @@ -31,6 +31,7 @@ import * as _ from 'lodash' declare var $:any; declare var GoogleMapsLoader:any; +declare var L:any; // Extra variables that live on Global that will be replaced by webpack DefinePlugin declare var ENV: string;