Fixed drawing on mobile
This commit is contained in:
		| @@ -20,7 +20,7 @@ export class ToolbarComponent implements AfterViewInit { | ||||
|  | ||||
|     @HostListener('window:resize', ['$event']) | ||||
|     ngAfterViewInit() { | ||||
|         setTimeout(() => this.maxMenuItems = Math.floor((document.getElementById('toolbar').offsetWidth - 200) / 75), 1); | ||||
|         setTimeout(() => this.maxMenuItems = Math.floor((document.getElementById('toolbar').offsetWidth - 100) / 75), 1); | ||||
|     } | ||||
|  | ||||
|     clickWrapper(item: ToolbarItem, menu?: ToolbarItem[]) { | ||||
|   | ||||
| @@ -36,7 +36,7 @@ export class MapService { | ||||
|     map; | ||||
|  | ||||
|     constructor(private elementId: string) { | ||||
|         this.map = L.map(elementId, {attributionControl: false, zoomControl: false}).setView({lat: 0, lng: 0}, 10); | ||||
|         this.map = L.map(elementId, {attributionControl: false, zoomControl: false, maxBoundsViscosity: 1}).setView({lat: 0, lng: 0}, 10); | ||||
|         this.map.on('click', (e) => this.click.next(e.latlng)); | ||||
|         this.setMapLayer(); | ||||
|     } | ||||
| @@ -140,21 +140,20 @@ export class MapService { | ||||
|     } | ||||
|  | ||||
|     startDrawing() { | ||||
|         this.map.dragging.disable(); | ||||
|  | ||||
|         this.drawListener = () => { | ||||
|             let poly = L.polyline([], {interactive: true, color: this.drawingColor, weight: this.drawingWeight}).addTo(this.map); | ||||
|         this.map.setMaxBounds(this.map.getBounds()); | ||||
|         this.drawListener = e => { | ||||
|             let poly = L.polyline([e.latlng], {interactive: true, color: this.drawingColor, weight: this.drawingWeight}).addTo(this.map); | ||||
|             poly.on('click', () => { if(this.deleteMode) this.map.removeLayer(poly); }); | ||||
|             let pushLine = e => poly.addLatLng(e.latlng); | ||||
|             this.map.on('mousemove', pushLine); | ||||
|             this.map.on('mouseup', () => this.map.off('mousemove', pushLine)); | ||||
|             this.map.on('mousemove touchmove', pushLine); | ||||
|             this.map.on('mouseup touchend', () => this.map.off('mousemove touchmove', pushLine)); | ||||
|         }; | ||||
|  | ||||
|         this.map.on('mousedown', this.drawListener); | ||||
|         this.map.on('mousedown touchstart', this.drawListener); | ||||
|     } | ||||
|  | ||||
|     stopDrawing() { | ||||
|         this.map.dragging.enable(); | ||||
|         this.map.off('mousedown', this.drawListener); | ||||
|         this.map.setMaxBounds(null); | ||||
|         this.map.off('mousedown touchstart', this.drawListener); | ||||
|     } | ||||
| } | ||||
|   | ||||
							
								
								
									
										67
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										67
									
								
								src/main.ts
									
									
									
									
									
								
							| @@ -1,13 +1,68 @@ | ||||
| import 'hammerjs'; | ||||
| import { enableProdMode } from '@angular/core'; | ||||
| import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; | ||||
| import {enableProdMode} from '@angular/core'; | ||||
| import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; | ||||
|  | ||||
| import { AppModule } from './app/app.module'; | ||||
| import { environment } from './environments/environment'; | ||||
| import {AppModule} from './app/app.module'; | ||||
| import {environment} from './environments/environment'; | ||||
|  | ||||
| if (environment.production) { | ||||
|   enableProdMode(); | ||||
|     enableProdMode(); | ||||
| } | ||||
|  | ||||
| platformBrowserDynamic().bootstrapModule(AppModule) | ||||
|   .catch(err => console.error(err)); | ||||
|     .catch(err => console.error(err)); | ||||
|  | ||||
| // Add touch events to leaflet | ||||
| declare const L; | ||||
|  | ||||
| L.Map.mergeOptions({touchExtend: true}); | ||||
|  | ||||
| L.Map.TouchExtend = L.Handler.extend({ | ||||
|     initialize: function (map) { | ||||
|         this._map = map; | ||||
|         this._container = map._container; | ||||
|         this._pane = map._panes.overlayPane; | ||||
|     }, | ||||
|     addHooks: function () { | ||||
|         L.DomEvent.on(this._container, 'touchstart', this._onTouchStart, this); | ||||
|         L.DomEvent.on(this._container, 'touchend', this._onTouchEnd, this); | ||||
|         L.DomEvent.on(this._container, 'touchmove', this._onTouchMove, this); | ||||
|     }, | ||||
|     removeHooks: function () { | ||||
|         L.DomEvent.off(this._container, 'touchstart', this._onTouchStart); | ||||
|         L.DomEvent.off(this._container, 'touchend', this._onTouchEnd); | ||||
|         L.DomEvent.off(this._container, 'touchmove', this._onTouchMove); | ||||
|     }, | ||||
|     _onTouchStart: function (e) { | ||||
|         if (!this._map._loaded) return; | ||||
|  | ||||
|       var containerPoint = this._map.mouseEventToContainerPoint(e), | ||||
|           layerPoint = this._map.containerPointToLayerPoint(containerPoint), | ||||
|           latlng = this._map.layerPointToLatLng(layerPoint); | ||||
|  | ||||
|         this._map.fire('touchstart', { | ||||
|           latlng: latlng, | ||||
|           layerPoint: layerPoint, | ||||
|           containerPoint: containerPoint, | ||||
|             originalEvent: e | ||||
|         }); | ||||
|     }, | ||||
|     _onTouchEnd: function (e) { | ||||
|         if (!this._map._loaded) return; | ||||
|         this._map.fire('touchend', {originalEvent: e}); | ||||
|     }, | ||||
|     _onTouchMove: function(e) { | ||||
|         if(!this._map._loaded) return; | ||||
|         console.log('fire'); | ||||
|       var containerPoint = this._map.mouseEventToContainerPoint(e), | ||||
|           layerPoint = this._map.containerPointToLayerPoint(containerPoint), | ||||
|           latlng = this._map.layerPointToLatLng(layerPoint); | ||||
|         this._map.fire('touchmove', { | ||||
|           latlng: latlng, | ||||
|           layerPoint: layerPoint, | ||||
|           containerPoint: containerPoint, | ||||
|           originalEvent: e | ||||
|         }); | ||||
|     } | ||||
| }); | ||||
| L.Map.addInitHook('addHandler', 'touchExtend', L.Map.TouchExtend); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user