import React from "react";
import GoogleMapReact from 'google-map-react';
import "./css/maps.css";
import apiKey from './config/googleApiKey.js';
import {calcDistance} from './helpers/distance';
import {longitude, latitude, mapWidth, mapHeight, markerIcon, testPath} from "./config/variables";
const svgStyle = {
fill: "#343a40",
stroke: "none",
top: "-20",
left: "-8",
position: "absolute"
};
const Marker = ({ text }) =>
;
export default class Google extends React.Component{
state = {
latitude: latitude,
longitude: longitude,
zoom: 15,
distance: 0,
path: testPath,
draggable: true
}
onMarkerInteraction = (childKey, childProps, mouse) => {
this.setState({draggable: false});
}
addMarker = (event) => {
const lng = event.lng
const lat = event.lat
console.log("Clicked at", lat, "/", lng)
let pathCopy = this.state.path.slice();
pathCopy.push([lat, lng]);
this.setState({path: pathCopy})
this.getDistance()
}
updateMarker = (childKey, childProps, mouse) => {
const lng = mouse.lng
const lat = mouse.lat
console.log("new position (marker", childKey, "):", lat, lng)
let pathCopy = this.state.path.slice();
pathCopy[childKey] = [lat, lng]
this.setState({path: pathCopy, draggable: true})
this.getDistance()
}
getDistance = () => {
let dst = calcDistance(this.state.path)
this.setState({distance: dst})
}
clearPath = () => {
this.setState({path: [], distance: 0})
}
render() {
const position = [this.state.latitude, this.state.longitude]
return (
this.addMarker(e, c)}
draggable={this.state.draggable}
onChildMouseDown={this.onMarkerInteraction}
onChildMouseUp={this.updateMarker}
onChildMouseMove={this.onMarkerInteraction}
onChildClick={() => console.log('child click')}
>
{this.state.path.map((pos, idx) =>
this.updateMarker(idx, e)}
/>
)}
Distanz: {Math.round(this.state.distance*100)/100} km
);
}
}