import React from "react"; import ReactMapGL from "react-map-gl"; import { Marker, NavigationControl, FullscreenControl, ScaleControl, GeolocateControl } from "react-map-gl"; import "./css/maps.css"; import mapboxToken from './config/mapboxToken.js'; import {calcDistance} from './helpers/distance'; const ICON = `M20.2,15.7L20.2,15.7c1.1-1.6,1.8-3.6,1.8-5.7c0-5.6-4.5-10-10-10S2,4.5,2,10c0,2,0.6,3.9,1.6,5.4c0,0.1,0.1,0.2,0.2,0.3 c0,0,0.1,0.1,0.1,0.2c0.2,0.3,0.4,0.6,0.7,0.9c2.6,3.1,7.4,7.6,7.4,7.6s4.8-4.5,7.4-7.5c0.2-0.3,0.5-0.6,0.7-0.9 C20.1,15.8,20.2,15.8,20.2,15.7z`; const LONGITUDE = 14.320570 const LATITUDE = 48.336950 export default class MapGL extends React.Component{ state = { viewport: { width: 600, height: 400, latitude: LATITUDE, longitude: LONGITUDE, zoom: 15, bearing: 0, pitch: 0 }, path: [] }; addMarker = event => { const lng = event.lngLat[0] const lat = event.lngLat[1] console.log("Clicked at", lat, "/", lng) let pathCopy = this.state.path.slice(); pathCopy.push([lat, lng]); this.setState({path: pathCopy}) this.getDistance() } updateMarker = (idx, event) => { const lng = event.lngLat[0] const lat = event.lngLat[1] console.log(lat, lng, idx) let pathCopy = this.state.path.slice(); pathCopy[idx] = [lat, lng] this.setState({path: pathCopy}) this.getDistance() } getDistance = () => { let dst = calcDistance(this.state.path) this.setState({distance: dst}) } clearPath = () => { this.setState({path: [], distance: 0}) } render() { return (
Distanz: {Math.round(this.state.distance*100)/100} km