最近在使用百度地圖API編寫一個具有地圖功能的MFC程序,在編寫htm時遇到一個腳本錯誤,并進行了解決!
step1:點擊右邊樹狀控件的某一項后,會根據該項的內容(即用戶名)查找地圖上是否標注了該用戶;
step2:若已標注該用戶,則將地圖的中心位置平移到該用戶上;若未標注該用戶,則彈出提示信息“暫無***的位置信息!”。
//樹型控件雙擊某項時,執行的函數,使得對應的用戶居中顯示 function showAtCenter(name) { var allOverlay = map.getOverlays(); for (var i = 0; i < allOverlay.length; i++) { if (allOverlay[i].getLabel().content == name) { map.panTo(allOverlay[i].getPosition()); return false; } } alert("暫無 '" + name + "' 的位置信息!"); }執行后的錯誤提示:
錯誤分析
注意在使用allOverlay[i]時要進行是否是Marker的判斷,因為getOverlays()后會得到類型不同的對象,只有Marker圖像標注類才有getLabel()方法,否則會出現錯誤:對象不支持“getLabel”屬性或方法。
解決方案
正確代碼如下:
//樹型控件雙擊某項時,執行的函數,使得對應的用戶居中顯示 function showAtCenter(name) { var allOverlay = map.getOverlays(); for (var i = 0; i < allOverlay.length - 1; i++) { //注意:在使用allOverlay[i]要進行是否是Marker的判斷,因為getOverlays()后會得到類型不同的對象 //只有Marker圖像標注類才有getLabel()方法,否則會出現錯誤:對象不支持“getLabel”屬性或方法 if (allOverlay[i] instanceof BMap.Marker) { if (allOverlay[i].getLabel().content == name) { map.panTo(allOverlay[i].getPosition()); return false; } } } alert("暫無 '" + name + "' 的位置信息!"); }正確執行效果
雙擊右邊樹形控件的Androiduser項后,地圖平移至以Androiduser標注為中心!
新聞熱點
疑難解答