2012-12-25 71 views
1

我正在使用谷歌地圖api v3和jquery mobile。我有一個頁面,其中tab1顯示包含路線的地圖,tab2顯示路線詳細信息(setPanel)。當我爲響應調用setDirections時,一切都很好。地圖居中,縮放也是正確的。當我導航到細節並選擇替代路線並按Tab1返回到地圖以查看新路線時,縮放關閉。爲什麼會發生?我可以做些什麼來使它工作?選擇替代路線縮小縮放

+0

代碼http://jsfiddle.net/bujar/LaYQJ/10/ 1.press按鈕 2.查看地圖 3.按路線 4.選擇第二路徑 5 。press map zoom is out – alkis

+0

如果你想解析你自己的路由html,你可以從路線結果中爲點擊處理程序創建你自己的'panTo'代碼。路線上的每個點都在結果中提供了緯度/深度 – charlietfl

+0

是的,我知道,但是我想知道是否有更簡單的方法來執行操作並保留已提供的功能。謝謝您的回答。 – alkis

回答

1

當地圖不顯示時指示被改變(到備用路線)時,它的大小錯誤(其大小在隱藏時報告給API)。顯示後需要觸發"resize" event on the map

從文檔:

調整大小 - 開發人員應在地圖上觸發該事件時,在div更改大小:google.maps.event.trigger(地圖, '調整')。

更新: 看起來像directions_changed事件不會在地圖隱藏且未設置邊界時觸發。顯示地圖時手動設置界限似乎有效。

function refresh(map) { 
    google.maps.event.trigger(map, 'resize'); 
    var routeIndex = globVars.directionsDisplay.getRouteIndex(); 
    var routes = globVars.directionsDisplay.getDirections().routes; 
    globVars.map.fitBounds(routes[routeIndex].bounds);  
    alert('resize');      
} 

jsfiddle

+0

我認爲這種零大小的情況,但我無法確定。我確實觸發了resize事件(請參閱刷新)。當調整大小被觸發時,我添加了一個警報http://jsfiddle.net/bujar/LaYQJ/。還有什麼我失蹤或我必須手動做? – alkis

+0

再次感謝你。如果我不太貪婪,你是否可以幫助我瞭解我的文章的第二部分?如果可以,請更新您的帖子,以便選擇它作爲答案並關閉主題(或者創建一個新主題更好嗎?)。 – alkis

+1

我知道從現有格式中更改格式的唯一方法是自己構建邊欄(正如您已經爲自己回答的那樣)。爲其他選擇或想法創建一個新的話題會更好。 – geocodezip