2013-02-21 63 views
2

謝謝您的時間。谷歌地圖API路線重新計算的阻力

簡介:

  • 谷歌地圖API V3項目
  • 點擊地圖上放置標記
  • 路線服務計算兩個連續的點

目標之間的航線:

拖動其中一個標記時重新計算路線。

進展:

到目前爲止,我已經組建了這個頁面:http://test.bluecactus.ro/gmaps.html。我已經評論了大部分代碼。

問題:

頁面第一阻力工作確定。當我將第二個標記,或再次拖動第一個,多段線不再是「再生」,他們應該是(刪除傳入和傳出,來自新的位置,在地圖上積計算)的方式。

對於多個拖累同一標記一些折線應刪除會在地圖上留下。拖動第二個標記時,將刪除錯誤的多段線。

這使我相信的東西是錯誤的識別標記拖的持有所有標記的陣列中的位置; 功能低於。我已經多次重做'數學' - 在紙上看起來確實沒問題。我已經嘗試將以外的所有內容放在循環中,並使用循環來標識全局變量中的位置。他們都沒有工作。

http://test.bluecactus.ro/gmaps.html

google.maps.event.addListener(marker, 'dragend', function(event) { //ondrag 
    for (var i = 0; i < gmarkers.length; i++) { 
     if(gmarkers[i].getPosition() == marker.getPosition()) { //find out array position of current marker 
     console.log("i = " + i); 
     //hide incoming and outgoing polylines; polylines index offset by -1 (n markers => n-1 polylines) 
     gpolys[i-1].setMap(null); 
     gpolys[i].setMap(null); 
     drawPath(gmarkers[i-1].getPosition(), marker.getPosition()); //calculate route between moved marker and previous point 
     drawPath(marker.getPosition(), gmarkers[i+1].getPosition()); //calculate route between moved marker and next point 
     //overwrite initial polylines; drawPath function automatically adds new polylines to end of gpolys array 
     gpolys[i-1] = gpolys[gpolys.length-2]; 
     console.log(gpolys); 
     gpolys[i] = gpolys[gpolys.length-1]; 
     console.log(gpolys); 
     //delete last 2 elements from gpolys 
     gpolys.pop(); 
     console.log(gpolys); 
     gpolys.pop(); 
     console.log(gpolys); 
     } 
    } 
}); 

注意

  • 第一和最後一個標記將無法正常工作,他們沒有處理的時刻。
  • 我已經找到了一些解決方法:在拖動重新計算整個路線 - 採取數組中的所有標記和之間的陰謀i & i + 1;然而,這隻適用於較小的路線,並且不會拖動到快速,否則會觸及OVER_QUERY_LIMIT。可以用兩次調用之間的延遲來解決,但似乎很奇怪,每次只重新計算一次就是一次。

我覺得我接近解決方案,但無法把握它。任何建議將不勝感激。謝謝。

+0

這是一個問題??? – Usman 2013-02-21 11:52:21

+0

它在「問題」部分。對不起,我會更清楚地說明:我在dragend函數中(或可能在其他地方)做錯了什麼,因爲它們應該是不重繪的嗎? – deep42 2013-02-21 12:20:44

+0

我以爲我可能會這樣做的方式不對,所以我使用標準的DirectionService(調用服務,將生成的折線保存在數組中並將其覆蓋在地圖上)重新映射地圖。但是,拖動時仍然存在問題,因爲它會恢復到原始方向:http://test.bluecactus.ro/gmaps2.html。有什麼建議麼?謝謝 – deep42 2013-03-11 09:56:44

回答