forked from MapComplete/MapComplete
		
	
		
			
	
	
		
			34 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			34 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 
								 | 
							
								import {GeoOperations} from "../../Logic/GeoOperations";
							 | 
						||
| 
								 | 
							
								import {MapillaryLink} from "../BigComponents/MapillaryLink";
							 | 
						||
| 
								 | 
							
								import {UIEventSource} from "../../Logic/UIEventSource";
							 | 
						||
| 
								 | 
							
								import Loc from "../../Models/Loc";
							 | 
						||
| 
								 | 
							
								import {SpecialVisualization} from "../SpecialVisualization";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								export class MapillaryLinkVis implements SpecialVisualization {
							 | 
						||
| 
								 | 
							
								    funcName = "mapillary_link"
							 | 
						||
| 
								 | 
							
								    docs = "Adds a button to open mapillary on the specified location"
							 | 
						||
| 
								 | 
							
								    args = [
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            name: "zoom",
							 | 
						||
| 
								 | 
							
								            doc: "The startzoom of mapillary",
							 | 
						||
| 
								 | 
							
								            defaultValue: "18",
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								    ]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public constr(state, tagsSource, args) {
							 | 
						||
| 
								 | 
							
								        const feat = state.allElements.ContainingFeatures.get(tagsSource.data.id)
							 | 
						||
| 
								 | 
							
								        const [lon, lat] = GeoOperations.centerpointCoordinates(feat)
							 | 
						||
| 
								 | 
							
								        let zoom = Number(args[0])
							 | 
						||
| 
								 | 
							
								        if (isNaN(zoom)) {
							 | 
						||
| 
								 | 
							
								            zoom = 18
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return new MapillaryLink({
							 | 
						||
| 
								 | 
							
								            locationControl: new UIEventSource<Loc>({
							 | 
						||
| 
								 | 
							
								                lat,
							 | 
						||
| 
								 | 
							
								                lon,
							 | 
						||
| 
								 | 
							
								                zoom,
							 | 
						||
| 
								 | 
							
								            }),
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |