import React from "react"; import { Map, TileLayer, Marker, Popup, ZoomControl, Polyline } from "react-leaflet"; import "./css/maps.css"; const LONGITUDE = 14.320570 const LATITUDE = 48.336950 export default class Leaflet extends React.Component{ state = { latitude: LATITUDE, longitude: LONGITUDE, zoom: 15, path: [[48.295742, 14.286967], [48.328529, 14.322428]], distance: 0 } newPathPoint = event => { const { lat, lng } = event.latlng console.log("Clicked at", lat, "/", lng) let pathCopy = this.state.path.slice(); pathCopy.push([lat, lng]); this.setState({path: pathCopy}) this.calcDistance() } updateMarker = (idx, event) => { let {lat, lng} = event.target.getLatLng(); console.log(lat, lng, idx) let pathCopy = this.state.path.slice(); pathCopy[idx] = [lat, lng] this.setState({path: pathCopy}) this.calcDistance() } calcDistance = () => { let dst = 0; let pathCopy = this.state.path.slice(); for(let i=0; i 1) { d = 1; } dst += Math.acos(d) * 180/Math.PI * 60 * 1.1515 * 1.609344; } this.setState({distance: dst}) } clearPath = () => { this.setState({path: [], distance: 0}) } render() { const position = [this.state.latitude, this.state.longitude] return (
JKU: Ente {this.state.path.map((pos, idx) => this.updateMarker(idx, e)} > {idx} )}

Distanz: {Math.round(this.state.distance*100)/100} km

); } }