我对我的代码感到有点困惑,我不知道该走哪条路。
我们假设我有一个穿过折线的汽车标记。
我通过设置计时器每隔500毫秒更改一次位置:
function animate() {
var p = polyline.GetPointAtDistance(distanceFromBeginning);
carMarker.setPosition(p);
distanceFromBeginning += step;
timerHandle = setTimeout("animate("+(distanceFromBeginning)+")", tick);
}
我还补充说我的车可以在路线上拖动:
google.maps.event.addDomListener(carMarker, 'dragend', function(e) {
var p = find_closest_point_on_path(e.latLng,polyline.getPath());
console.log("position is : " + p);
carMarker.setPosition(p);
console.log("dragend")
});
现在我在折线上拖车后我有了一个新位置,如何从起始位置得到它的距离,以便我可以在我的计时器中正确更新?
答案 0 :(得分:0)
一旦你有了终点位置的坐标(让我们调用“目的地”),并假设你的'dragend'事件你设置了汽车的坐标(让我们称之为“原点”)你可以调用这个函数在你的听众身上:
function calculateDistances() {
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix(
{
origins: [origin],
destinations: [destination],
travelMode: google.maps.TravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.METRIC,
avoidHighways: false,
avoidTolls: false
}, callback);
}
function callback(response, status) {
if (status != google.maps.DistanceMatrixStatus.OK) {
alert('Error was: ' + status);
} else {
var origins = response.originAddresses;
var destinations = response.destinationAddresses;
for (var i = 0; i < origins.length; i++) {
var results = response.rows[i].elements;
for (var j = 0; j < results.length; j++) {
console.log(results[j].distance.text);
console.log(results[j].duration.text);
}
}
}
}
Check this example on jsfiddle based on the Google documentation(look the result on your console)
如果您需要有关此代码的更多帮助,或者它不是您想要的,请立即回复。