|
@@ -8,6 +8,7 @@ import {
|
|
Polyline
|
|
Polyline
|
|
} from "react-leaflet";
|
|
} from "react-leaflet";
|
|
import "./css/maps.css";
|
|
import "./css/maps.css";
|
|
|
|
+import {calcDistance} from './helpers/distance';
|
|
|
|
|
|
const LONGITUDE = 14.320570
|
|
const LONGITUDE = 14.320570
|
|
const LATITUDE = 48.336950
|
|
const LATITUDE = 48.336950
|
|
@@ -28,7 +29,7 @@ export default class Leaflet extends React.Component{
|
|
let pathCopy = this.state.path.slice();
|
|
let pathCopy = this.state.path.slice();
|
|
pathCopy.push([lat, lng]);
|
|
pathCopy.push([lat, lng]);
|
|
this.setState({path: pathCopy})
|
|
this.setState({path: pathCopy})
|
|
- this.calcDistance()
|
|
|
|
|
|
+ this.getDistance()
|
|
}
|
|
}
|
|
|
|
|
|
updateMarker = (idx, event) => {
|
|
updateMarker = (idx, event) => {
|
|
@@ -37,30 +38,11 @@ export default class Leaflet extends React.Component{
|
|
let pathCopy = this.state.path.slice();
|
|
let pathCopy = this.state.path.slice();
|
|
pathCopy[idx] = [lat, lng]
|
|
pathCopy[idx] = [lat, lng]
|
|
this.setState({path: pathCopy})
|
|
this.setState({path: pathCopy})
|
|
- this.calcDistance()
|
|
|
|
|
|
+ this.getDistance()
|
|
}
|
|
}
|
|
|
|
|
|
- calcDistance = () => {
|
|
|
|
- let dst = 0;
|
|
|
|
- let pathCopy = this.state.path.slice();
|
|
|
|
- for(let i=0; i<pathCopy.length-1; i++) {
|
|
|
|
- /* let currLat = pathCopy[i][0];
|
|
|
|
- let currLng = pathCopy[i][1];
|
|
|
|
- let nextLat = pathCopy[i+1][0];
|
|
|
|
- let nextLng = pathCopy[i+1][1];
|
|
|
|
- let dstLat = (currLat - nextLat) ** 2
|
|
|
|
- let dstLng = (currLng - nextLng) ** 2
|
|
|
|
- dst += Math.sqrt(dstLat + dstLng) * 108*/
|
|
|
|
- var radlat1 = Math.PI * pathCopy[i][0]/180;
|
|
|
|
- var radlat2 = Math.PI * pathCopy[i+1][0]/180;
|
|
|
|
- var theta = pathCopy[i][1]-pathCopy[i+1][1];
|
|
|
|
- var radtheta = Math.PI * theta/180;
|
|
|
|
- var d = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
|
|
|
|
- if (d > 1) {
|
|
|
|
- d = 1;
|
|
|
|
- }
|
|
|
|
- dst += Math.acos(d) * 180/Math.PI * 60 * 1.1515 * 1.609344;
|
|
|
|
- }
|
|
|
|
|
|
+ getDistance = () => {
|
|
|
|
+ let dst = calcDistance(this.state.path)
|
|
this.setState({distance: dst})
|
|
this.setState({distance: dst})
|
|
}
|
|
}
|
|
|
|
|
|
@@ -109,11 +91,11 @@ export default class Leaflet extends React.Component{
|
|
|
|
|
|
<div>
|
|
<div>
|
|
<button onClick={this.clearPath}>Clear path</button>
|
|
<button onClick={this.clearPath}>Clear path</button>
|
|
- <button onClick={this.calcDistance}>Calculate Distance</button>
|
|
|
|
|
|
+ <button onClick={this.getDistance}>Calculate Distance</button>
|
|
<p>
|
|
<p>
|
|
Distanz: {Math.round(this.state.distance*100)/100} km
|
|
Distanz: {Math.round(this.state.distance*100)/100} km
|
|
</p>
|
|
</p>
|
|
- </div>
|
|
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
);
|
|
);
|
|
}
|
|
}
|