forked from MapComplete/MapComplete
		
	First attempt for a current-view box
This commit is contained in:
		
							parent
							
								
									ee3a18def1
								
							
						
					
					
						commit
						dc5b777713
					
				
					 3 changed files with 45 additions and 3 deletions
				
			
		|  | @ -20,7 +20,7 @@ export default class AllKnownLayers { | ||||||
|     public static sharedLayersJson: Map<string, any> = AllKnownLayers.getSharedLayersJson(); |     public static sharedLayersJson: Map<string, any> = AllKnownLayers.getSharedLayersJson(); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     public static added_by_default: string[] = ["gps_location", "gps_location_history", "home_location", "gps_track",] |     public static added_by_default: string[] = ["gps_location", "gps_location_history", "home_location", "gps_track","current_view"] | ||||||
|     public static no_include: string[] = ["conflation", "left_right_style", "split_point"] |     public static no_include: string[] = ["conflation", "left_right_style", "split_point"] | ||||||
|     /** |     /** | ||||||
|      * Layer IDs of layers which have special properties through built-in hooks |      * Layer IDs of layers which have special properties through built-in hooks | ||||||
|  |  | ||||||
|  | @ -17,6 +17,7 @@ import {FeatureSourceForLayer, Tiled} from "../FeatureSource/FeatureSource"; | ||||||
| import SimpleFeatureSource from "../FeatureSource/Sources/SimpleFeatureSource"; | import SimpleFeatureSource from "../FeatureSource/Sources/SimpleFeatureSource"; | ||||||
| import {LocalStorageSource} from "../Web/LocalStorageSource"; | import {LocalStorageSource} from "../Web/LocalStorageSource"; | ||||||
| import {GeoOperations} from "../GeoOperations"; | import {GeoOperations} from "../GeoOperations"; | ||||||
|  | import StaticFeatureSource from "../FeatureSource/Sources/StaticFeatureSource"; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * Contains all the leaflet-map related state |  * Contains all the leaflet-map related state | ||||||
|  | @ -44,11 +45,12 @@ export default class MapState extends UserRelatedState { | ||||||
|         lon: number; |         lon: number; | ||||||
|     }> = new UIEventSource<{ lat: number; lon: number }>(undefined); |     }> = new UIEventSource<{ lat: number; lon: number }>(undefined); | ||||||
| 
 | 
 | ||||||
|  |     public currentView: FeatureSourceForLayer | ||||||
|     /** |     /** | ||||||
|      * The location as delivered by the GPS |      * The location as delivered by the GPS | ||||||
|      */ |      */ | ||||||
|     public currentUserLocation: FeatureSourceForLayer & Tiled; |     public currentUserLocation: FeatureSourceForLayer & Tiled; | ||||||
| 
 |      | ||||||
|     /** |     /** | ||||||
|      * All previously visited points |      * All previously visited points | ||||||
|      */ |      */ | ||||||
|  | @ -125,6 +127,7 @@ export default class MapState extends UserRelatedState { | ||||||
|         this.initHomeLocation() |         this.initHomeLocation() | ||||||
|         this.initGpsLocation() |         this.initGpsLocation() | ||||||
|         this.initUserLocationTrail() |         this.initUserLocationTrail() | ||||||
|  |         this.initCurrentView() | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public AddAllOverlaysToMap(leafletMap: UIEventSource<any>) { |     public AddAllOverlaysToMap(leafletMap: UIEventSource<any>) { | ||||||
|  | @ -169,6 +172,34 @@ export default class MapState extends UserRelatedState { | ||||||
|             }) |             }) | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |      | ||||||
|  |     private initCurrentView(){ | ||||||
|  |         const features : UIEventSource<{ feature: any, freshness: Date }[]>= this.currentBounds.map(bounds => { | ||||||
|  |             const feature = { | ||||||
|  |                 freshness: new Date(), | ||||||
|  |                 feature: { | ||||||
|  |                     type: "Polygon", | ||||||
|  |                     properties:{ | ||||||
|  |                         id:"current_view" | ||||||
|  |                     }, | ||||||
|  |                     geometry:{ | ||||||
|  |                         type:"Polygon", | ||||||
|  |                         coordinates:[ | ||||||
|  |                             [bounds.maxLon, bounds.maxLat], | ||||||
|  |                             [bounds.minLon, bounds.maxLat], | ||||||
|  |                             [bounds.minLon, bounds.minLat], | ||||||
|  |                             [bounds.maxLon, bounds.minLat], | ||||||
|  |                             [bounds.maxLon, bounds.maxLat], | ||||||
|  |                         ] | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             return [feature] | ||||||
|  |         }) | ||||||
|  |         let currentViewLayer: FilteredLayer = this.filteredLayers.data.filter(l => l.layerDef.id === "current_view")[0] | ||||||
|  | 
 | ||||||
|  |         this.currentView = new SimpleFeatureSource(currentViewLayer,0,features) | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     private initGpsLocation() { |     private initGpsLocation() { | ||||||
|         // Initialize the gps layer data. This is emtpy for now, the actual writing happens in the Geolocationhandler
 |         // Initialize the gps layer data. This is emtpy for now, the actual writing happens in the Geolocationhandler
 | ||||||
|  |  | ||||||
|  | @ -1,3 +1,14 @@ | ||||||
| { | { | ||||||
| 
 |   "id": "current_view", | ||||||
|  |   "description": "A meta-layer which contains one single feature, namely the BBOX of the current map view. This can be used to trigger special actions. If a popup is defined for this layer, this popup will be accessible via an extra button on screen", | ||||||
|  |   "source": { | ||||||
|  |     "osmTags": "id=currentView" | ||||||
|  |   }, | ||||||
|  |   "title": "Current View", | ||||||
|  |   "tagRenderings": [], | ||||||
|  |   "mapRendering": [ | ||||||
|  |     { | ||||||
|  |       "color": "#cccc0088" | ||||||
|  |     } | ||||||
|  |   ] | ||||||
| } | } | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue