我正在使用Google地圖來生成駕車路線。我希望有一個功能可以根據時間流逝以及Google的總時間來估算某個人在哪個位置,然後在推測的位置放置一個引腳(可能是移動的引腳)。Google地圖路線跟蹤
我知道如何在Google中生成地圖,但這是關於我的知識極限的地方。我將如何將銷釘放在大約位置。
我在想把總時間轉換成秒,經過時間轉換成秒,然後除以獲得路線上完成的百分比。我將如何放置一個別針到這將是的路線位置?而且,我可以移動這個引腳,每隔30-60秒更新一次嗎?
我正在使用Google地圖來生成駕車路線。我希望有一個功能可以根據時間流逝以及Google的總時間來估算某個人在哪個位置,然後在推測的位置放置一個引腳(可能是移動的引腳)。Google地圖路線跟蹤
我知道如何在Google中生成地圖,但這是關於我的知識極限的地方。我將如何將銷釘放在大約位置。
我在想把總時間轉換成秒,經過時間轉換成秒,然後除以獲得路線上完成的百分比。我將如何放置一個別針到這將是的路線位置?而且,我可以移動這個引腳,每隔30-60秒更新一次嗎?
地圖結果的持續時間屬性已經以秒爲單位。考慮到這一點,從某種意義上講,您可以按照路線 - >腿 - >步驟的持續時間來給出一個粗略的想法,即每個步驟的行程有多遠。
現在你已經知道了每一步行程到底有多遠的概念,你可以對經過的時間進行比較,看看它們應該在哪一步。一旦您驗證了正確的步驟,您可以使用步驟的lat_lngs
放置標記。 lat_lngs
是在該步驟中傳遞的點數組,因此您可以根據經過的時間與他們應該開始該步驟的時間以及他們應該完成該時間的時間相比較,計算出將哪個lat_lng
放置在該標記處。
下面是一些代碼,不會對你的應用程序中運行,並且不包含任何實際的經過時間的邏輯,所以最好把它當作僞代碼:
// route is a directionsService (google.maps.DirectionsService()) result
route = response.routes[0];
route.legs.forEach(function(leg) {
var counter = 0;
leg.steps.forEach(function(step) {
counter = counter + step.duration.value;
console.log("Route progress in seconds: " + counter);
if (elapsed >= counter) {
// percent would take the beginning and end time for the step
// and compare it to the elapsed duration to get a percentage
// that would be used to get the index of the appropriate lat_lng
var marker = new google.maps.Marker({
position: step.lat_lngs[percent],
map: map,
title: "Current Location"
});
}
});
});
你不得不創建自己的邏輯實際更新地圖等,但希望這是一個體面的起點。