forked from MapComplete/MapComplete
		
	More work on splitting roads, WIP; refactoring tests
This commit is contained in:
		
							parent
							
								
									e374bb355c
								
							
						
					
					
						commit
						1f93923820
					
				
					 62 changed files with 1163 additions and 823 deletions
				
			
		|  | @ -16,6 +16,11 @@ export interface MinimapOptions { | |||
|     lastClickLocation?: UIEventSource<{ lat: number, lon: number }> | ||||
| } | ||||
| 
 | ||||
| export interface MinimapObj { | ||||
|     readonly leafletMap: UIEventSource<any>,  | ||||
|     installBounds(factor: number | BBox, showRange?: boolean) : void | ||||
| } | ||||
| 
 | ||||
| export default class Minimap { | ||||
|     /** | ||||
|      * A stub implementation. The actual implementation is injected later on, but only in the browser. | ||||
|  | @ -25,6 +30,6 @@ export default class Minimap { | |||
|     /** | ||||
|      * Construct a minimap | ||||
|      */ | ||||
|     public static createMiniMap: (options: MinimapOptions) => BaseUIElement & { readonly leafletMap: UIEventSource<any> } | ||||
|     public static createMiniMap: (options: MinimapOptions) => (BaseUIElement & MinimapObj) | ||||
| 
 | ||||
| } | ||||
|  | @ -7,9 +7,9 @@ import AvailableBaseLayers from "../../Logic/Actors/AvailableBaseLayers"; | |||
| import {BBox} from "../../Logic/GeoOperations"; | ||||
| import * as L from "leaflet"; | ||||
| import {Map} from "leaflet"; | ||||
| import Minimap, {MinimapOptions} from "./Minimap"; | ||||
| import Minimap, {MinimapObj, MinimapOptions} from "./Minimap"; | ||||
| 
 | ||||
| export default class MinimapImplementation extends BaseUIElement { | ||||
| export default class MinimapImplementation extends BaseUIElement implements MinimapObj { | ||||
|     private static _nextId = 0; | ||||
|     public readonly leafletMap: UIEventSource<Map> | ||||
|     private readonly _id: string; | ||||
|  | @ -44,6 +44,65 @@ export default class MinimapImplementation extends BaseUIElement { | |||
|         Minimap.createMiniMap = options => new MinimapImplementation(options) | ||||
|     } | ||||
| 
 | ||||
|     public installBounds(factor: number | BBox, showRange?: boolean) { | ||||
|         this.leafletMap.addCallbackD(leaflet => { | ||||
|             console.log("Installing max bounds") | ||||
| 
 | ||||
|             let bounds; | ||||
|             if (typeof factor === "number") { | ||||
|                 bounds = leaflet.getBounds() | ||||
|                 leaflet.setMaxBounds(bounds.pad(factor)) | ||||
|             }else{ | ||||
|                 // @ts-ignore
 | ||||
|                 leaflet.setMaxBounds(factor.toLeaflet()) | ||||
|                 bounds = leaflet.getBounds() | ||||
|             } | ||||
| 
 | ||||
|             if (showRange) { | ||||
|                 const data = { | ||||
|                     type: "FeatureCollection", | ||||
|                     features: [{ | ||||
|                         "type": "Feature", | ||||
|                         "geometry": { | ||||
|                             "type": "LineString", | ||||
|                             "coordinates": [ | ||||
|                                 [ | ||||
|                                     bounds.getEast(), | ||||
|                                     bounds.getNorth() | ||||
|                                 ], | ||||
|                                 [ | ||||
|                                     bounds.getWest(), | ||||
|                                     bounds.getNorth() | ||||
|                                 ], | ||||
|                                 [ | ||||
|                                     bounds.getWest(), | ||||
|                                     bounds.getSouth() | ||||
|                                 ], | ||||
| 
 | ||||
|                                 [ | ||||
|                                     bounds.getEast(), | ||||
|                                     bounds.getSouth() | ||||
|                                 ], | ||||
|                                 [ | ||||
|                                     bounds.getEast(), | ||||
|                                     bounds.getNorth() | ||||
|                                 ] | ||||
|                             ] | ||||
|                         } | ||||
|                     }] | ||||
|                 } | ||||
|                 // @ts-ignore
 | ||||
|                 L.geoJSON(data, { | ||||
|                     style: { | ||||
|                         color: "#f00", | ||||
|                         weight: 2, | ||||
|                         opacity: 0.4 | ||||
|                     } | ||||
|                 }).addTo(leaflet) | ||||
|             } | ||||
|         }) | ||||
|     } | ||||
| 
 | ||||
|     protected InnerConstructElement(): HTMLElement { | ||||
|         const div = document.createElement("div") | ||||
|         div.id = this._id; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue