diff --git a/src/app/detail/detail.component.html b/src/app/detail/detail.component.html index fd9463a..167e691 100644 --- a/src/app/detail/detail.component.html +++ b/src/app/detail/detail.component.html @@ -1 +1,9 @@ -

detail works!

+
+

{{test.name}}

+

{{test.description}}

+

lat:{{cord.lat}}, lang:{{cord.lng}}

+

distanza:{{distance}}

+ +
diff --git a/src/app/detail/detail.component.ts b/src/app/detail/detail.component.ts index de09a39..6c582ac 100755 --- a/src/app/detail/detail.component.ts +++ b/src/app/detail/detail.component.ts @@ -1,4 +1,5 @@ import { Component, OnInit } from '@angular/core'; +import {interval} from "rxjs"; @Component({ selector: 'app-detail', @@ -8,6 +9,70 @@ import { Component, OnInit } from '@angular/core'; export class DetailComponent implements OnInit{ ngOnInit(): void { + this.getLocation(); + } + test = { + name: 'SPAI', + cordinates: "46.165262,8.791225", + description: "Lorem ipsum" + } + + cord = { + lat: 0, + lng: 0 + } + + showNav = true; + distance = 0; + getLocation() { + console.log("get location"); + if (navigator.geolocation) { + navigator.geolocation.getCurrentPosition((position) => { + this.cord.lat = position.coords.latitude; + this.cord.lng = position.coords.longitude; + console.log(this.cord); + this.checkDistanceTimer(); + }) + }else { + alert("Geolocation is not supported by this browser."); + } } + checkDistanceTimer() { + //set interval + let lat1 = this.cord.lat; + let lon1 = this.cord.lng; + let lat2 = this.test.cordinates.split(",")[0]; + let lon2 = this.test.cordinates.split(",")[1]; + let intervalID = setInterval(() => { + if(this.showNav){ + this.distance = this.getDistanceBetweenCoordinates(lat1, lon1, +lat2, +lon2); + console.log(this.distance); + if(this.distance < 0.05){ + this.showNav = false; + clearInterval(intervalID); + } + }else{ + clearInterval(intervalID); + } + } , 1000); + } + + getDistanceBetweenCoordinates(lat1: number, lon1: number, lat2: number, lon2: number) { + const earthRadius = 6371; // Radius of the earth in km + const dLat = this.deg2rad(lat2 - lat1); // deg2rad below + const dLon = this.deg2rad(lon2 - lon1); + const a = + Math.sin(dLat/2) * Math.sin(dLat/2) + + Math.cos(this.deg2rad(lat1)) * Math.cos(this.deg2rad(lat2)) * + Math.sin(dLon/2) * Math.sin(dLon/2) + ; + const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); + const distance = earthRadius * c; // Distance in km + return distance; + } + + deg2rad(deg: number) { + return deg * (Math.PI/180) + } }