2012-12-25 69 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