這個問題其實很傻,解決方法沒有任何技術含量,只是記錄下工做中發生的事。javascript
前陣子給一個汽車集團客戶作了一個經銷商查詢系統,其中一個功能是使用地圖標註經銷商店面地址,而且實現導航功能。html
頁面演示地址:http://www.lyytqm.com/Dealershipsjava
點擊地址區域在模態窗口中顯示百度地圖,並在地圖中標註點位,顯示窗口信息,但信息窗口展現的信息頻繁失效,僅顯示名稱。bootstrap
更換了各類加載數據方式不能解決,在蹲廁所時想到了緣由,便可給出解決方法。api
緣由是bootstrap modal 以及動畫 沒過徹底渲染完成的狀況下,信息就加載完成,這種待模態窗口徹底渲染後,窗口信息就不會正常顯示。動畫
解決方法是使用shown.bs.modal事件,待徹底演染完成窗口後,打插入標註點,以及窗口信息。網站
代碼以下:this
$('#map-location-modal').on('shown.bs.modal', function (e) { _ShowMap(data.lng, data.lat, data.title, data.address, data.telphone, '18'); }) function _ShowMap(lng, lat, name, addrsee, phone, zoom) { var message = '<p style="color: #bf0008;">' + name + '</p><p>地址:' + addrsee + '</p><p>電話:' + phone + '</p>' + '<form action="http://api.map.baidu.com/direction" method="get" id="gotoBaiduForm">' + ' <input type="hidden" value="易通集團網站" name="src" />' + ' <input type="hidden" value="" name="region" />' + ' <input type="hidden" value="html" name="output" />' + ' <input type="hidden" value="driving" name="mode" />' + ' <input type="hidden" value="" name="origin" />' + ' <input type="hidden" value="latlng:' + lat + ',' + lng + '|name:' + name + '" name="destination" />' + ' <button type="button" onclick="gotobaidu()" id="NavigationButton" class="btn btn-default">導航</button>' + '</form>'; var map = new BMap.Map("map-container"); var marker = new BMap.Marker(new BMap.Point(lng, lat)); var infoWindow = new BMap.InfoWindow(message); map.enableScrollWheelZoom(true); //開啓鼠標滾輪縮放 map.centerAndZoom(new BMap.Point(lng, lat), zoom); map.addControl(new BMap.NavigationControl()); map.addControl(new BMap.MapTypeControl()); //添加地圖類型控件 map.addOverlay(marker); marker.addEventListener("click", function () { this.openInfoWindow(infoWindow); }); marker.openInfoWindow(infoWindow); }