РЕДАКТИРОВАТЬ: Поскольку мое описание было нечетким. Мне нужны результаты .route () в моем внутреннем приложении, а не на карте. Мне нужна продолжительность и расстояние между исходной точкой и пунктом назначения для дальнейших вычислений в моем приложении.
До сих пор я пробовал это с помощью функции обратного вызова c:
function getTravelTime(origin, destination, cb) {
const directionsService = new google.maps.DirectionsService();
directionsService.route(
{
origin: origin,
destination: destination,
travelMode: "DRIVING"
},
(result, status) => {
if (status === google.maps.DirectionsStatus.OK) {
cb(null, {
duration: moment.utc(moment.duration(result.routes[0].legs[0].duration.value, 'seconds').as('milliseconds')).format('HH:mm'),
distance: result.routes[0].legs[0].distance.value
});
} else {
cb('error');
console.log(result);
}
}
);
};
, и я пытался прочтите это так:
let tInfo = getTravelTime(origin, destination, function (err, dist) {
if (!err) {
let distanceBetweenLocations = dist.distance;
let durationBetweenLocations = dist.duration;
// Or with saving to a state
setTravelInformation(prevState => ({
distance: dist.distance,
duration: dist.duration
}));
}
});
Есть ли возможность рассчитать расстояние и время в пути без необходимости рендеринга карты?
Пока я получил это, сильно сократил, поскольку у меня гораздо больше logi c для других компонентов в том же файле :
import {
withGoogleMap,
GoogleMap,
withScriptjs,
Marker,
DirectionsRenderer
} from "react-google-maps";
const getTravelTime = (origin, destination) => {
const directionsService = new google.maps.DirectionsService();
directionsService.route(
{
origin: origin,
destination: destination,
travelMode: google.maps.TravelMode.DRIVING
},
(result, status) => {
console.log(result)
if (status === google.maps.DirectionsStatus.OK) {
setDirections(result);
} else {
setError(result);
}
}
);
}
Нужно ли мне использовать Ho C withScript js и оборачивать мой компонент вокруг этого? Я невежественен.