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 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"]
 | 
			
		||||
    /**
 | 
			
		||||
     * 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 {LocalStorageSource} from "../Web/LocalStorageSource";
 | 
			
		||||
import {GeoOperations} from "../GeoOperations";
 | 
			
		||||
import StaticFeatureSource from "../FeatureSource/Sources/StaticFeatureSource";
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Contains all the leaflet-map related state
 | 
			
		||||
| 
						 | 
				
			
			@ -44,6 +45,7 @@ export default class MapState extends UserRelatedState {
 | 
			
		|||
        lon: number;
 | 
			
		||||
    }> = new UIEventSource<{ lat: number; lon: number }>(undefined);
 | 
			
		||||
 | 
			
		||||
    public currentView: FeatureSourceForLayer
 | 
			
		||||
    /**
 | 
			
		||||
     * The location as delivered by the GPS
 | 
			
		||||
     */
 | 
			
		||||
| 
						 | 
				
			
			@ -125,6 +127,7 @@ export default class MapState extends UserRelatedState {
 | 
			
		|||
        this.initHomeLocation()
 | 
			
		||||
        this.initGpsLocation()
 | 
			
		||||
        this.initUserLocationTrail()
 | 
			
		||||
        this.initCurrentView()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public AddAllOverlaysToMap(leafletMap: UIEventSource<any>) {
 | 
			
		||||
| 
						 | 
				
			
			@ -170,6 +173,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() {
 | 
			
		||||
        // Initialize the gps layer data. This is emtpy for now, the actual writing happens in the Geolocationhandler
 | 
			
		||||
        let gpsLayerDef: FilteredLayer = this.filteredLayers.data.filter(l => l.layerDef.id === "gps_location")[0]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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