【发布时间】:2020-10-29 07:33:31
【问题描述】:
我需要在我的内部应用程序中来自.route() 的结果,而不是进入任何地图。我需要起点和终点之间的持续时间和距离,以便在我的应用中进行进一步计算。
到目前为止,我尝试了一个回调函数:
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
}));
}
});
有没有可能在不需要渲染地图的情况下计算距离和旅行时间?
到目前为止,我得到了这个,大大缩短了,因为我在同一个文件中获得了更多其他组件的逻辑:
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);
}
}
);
}
我是否需要将 HoC 与 Scriptjs 一起使用并围绕它包装我的组件?
【问题讨论】:
-
您在地图上的哪个位置呈现这些方向?发布的代码没有显示。什么不起作用?你的问题既不清楚又太宽泛。请提供minimal reproducible example 以及清晰的问题描述。
-
我为我的问题添加了一个编辑。路线计算有效,但由于它是异步的,我无法读取数据,我需要结果以在我的应用程序中进行进一步的内部计算。我用回调函数试过了,但还是不行。
标签: reactjs google-maps google-directions-api travel-time