Зачем вы делаете здесь map?
data.map((key)=>{
if(key.events.length>0){
key.events.map(ev=>{
и здесь
key.events.map(ev=>{
Зачем создаете новый массив? newVal = value.concat();
className = {nameOfClass}синтаксис реакта, это переменная
<
directionsService = new google.maps.DirectionsService(),
directionsDisplay = new google.maps.DirectionsRenderer({
polylineOptions: {
strokeColor: '#4079f8',//
strokeWeight: 6
,
draggable: this.props.draggable,//думаю тут вам стоит поставить false
});
var request = {
origin: {
"lat" : points[0][0],//координаты начальной точки
"lng" : points[0][1],//координаты начальной точки
},
waypoints: waypts, //это можно опустить если нет промежуточных точек
optimizeWaypoints: this.props.optimizeWaypoints, //true or false
destination:{
"lat" : points[points.length-1][0],//тут координаты конечно точки
"lng" : points[points.length-1][1]//тут координаты конечно точки
},
travelMode: 'DRIVING'
};
directionsService.route(request, function(response, status) {
if (status == 'OK') {
console.log('%c response', 'font-size: 21px;', response)
computeTotalDistance(response) //ответ отсюда кидаете в массив, находите самое меньшее
}
});
directionsDisplay.setDirections(response);//сюда кидаете саммый мальенький ответ
function computeTotalDistance(result) {
var total = 0;
var myroute = result.routes[0];
for (var i = 0; i < myroute.legs.length; i++) {
total += myroute.legs[i].distance.value;
}
total = total / 1000; //in km
return total
}
То же самое читал за bind его лучше делать в конструкторе или использовать стрелочную функцию
onClick={this.onClick.bind(null,item)}
здесь выйдет, что нужно сделать, например 1000 раз бинд