import React from "react"; import ReactMapboxGl, { Layer, Feature, ZoomControl, ScaleControl, RotationControl, } from 'react-mapbox-gl'; import mapboxToken from './config/mapboxToken.js'; import {calcDistance} from './helpers/distance'; import {longitude, latitude, mapWidth, mapHeight} from "./config/variables"; import {Button} from "reactstrap"; const Map = ReactMapboxGl({ accessToken: mapboxToken }); export default class Mapbox extends React.Component{ state = { latitude: latitude, longitude: longitude, zoom: [15], path: [[longitude, latitude]], distance: 0, center: [longitude, latitude] } addMarker = (event, click) => { const lng = click.lngLat.lng const lat = click.lngLat.lat console.log("Clicked at", lat, "/", lng) let pathCopy = this.state.path.slice(); pathCopy.push([lng, lat]); this.setState({path: pathCopy}) this.getDistance() } updateMarker = (idx, event) => { const lng = event.lngLat.lng const lat = event.lngLat.lat console.log(lat, lng, idx) let pathCopy = this.state.path.slice(); pathCopy[idx] = [lng, lat] this.setState({path: pathCopy}) this.getDistance() } getDistance = () => { let dst = calcDistance(this.state.path) this.setState({distance: dst}) } clearPath = () => { this.setState({path: [], distance: 0}) } render() { const position = [this.state.longitude, this.state.latitude] return (
this.addMarker(e, c)} > {this.state.path.map((pos, idx) => this.updateMarker(idx, e)} /> )}

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

); } }