2012-04-19 5 views

ответ

1

Я придумал решение, прежде чем зная этого поста. Я думаю, что это короткий и краткий, поэтому я надеюсь, что это поможет любому, кто увидит это в будущем.

ШАГ 1: Пропустите параметр ответа от directionsService.route() к функции, которую я называю это driveSim(response):

directionsService.route(request, function(response, status) { 
    if (status == google.maps.DirectionsStatus.OK) { 
     directionsDisplay.setDirections(response); 
     driveSim(response); 
    }; 
}); 

ШАГ 2: Создать маркер с его начальной позиции равен тому, что от первоначального ответа position, затем перебирайте все значения в массиве объектов path, и это оно. Он просто оживляет его при фиксированном всплеске, который не коррелирует с какой-либо конкретной скоростью. Если вы хотите сделать это, просто используйте console.log(path);, чтобы изучить все данные в объекте var path, и вы увидите, что довольно легко определить задержку, необходимую для заданной скорости.

function driveSim (response){ 
    var path = response.routes[0].overview_path; 
    var maxIter=path.length; 

    taxiCab=new google.maps.Marker({ 
     position: path[0], 
     map: map, 
    }); 

    var delay = 20, count = 0; 
    function delayed() { 
     count += 1; 
     taxiCab.setPosition({lat:path[count].lat(),lng:path[count].lng()}); 
     if (count < maxIter-1) { 
     setTimeout(delayed, delay); 
     } 
    } 
    delayed(); 
} 

И, все.