2012-03-22 69 views
0

這段代碼在Firefox中,在鉻/ Internet Explorer中工作正常我在控制檯'無法打開文件'時試圖加載kml(從一個PHP生成腳本)kml加載失敗在不同的瀏覽器 - javascript/geoxml3 /谷歌地圖

因爲它在FF中工作,我不認爲我的代碼/ kml有問題,但它可能需要一個補充才能使其在其他瀏覽器中工作?嗯...即時通訊不是專家,任何意見,以解決代碼問題是值得歡迎的, 非常感謝!使用geoxml3庫

/谷歌地圖apiv3

參考鏈接: 用法geoxml LIB:http://erskinelabs.com/cartography-javascript/

+0

所以,問題似乎是在geoxml。我假設你不想在Google Maps API中使用KmlLayer選項?有一件事要檢查,你用什麼MIME類型? – 2012-03-22 23:03:49

+0

生成kml時,我設置Content-type:application/vnd.google-earth.kml + xml,我也不想使用kmllayer,因爲當geoxml工作時,它允許我將偵聽器添加到每個標記的mouseover屬性上在kmllayer中不可用 – weaverk 2012-03-23 08:37:44

+0

我建議在他們的問題跟蹤器上提交一個錯誤:http://code.google.com/p/geoxml3/issues/list它似乎是活躍的。 – 2012-03-23 18:40:00

回答

2

與GeoXML3庫的問題是,Ajax請求都在geoXML3.fetchXML功能處理的方式,這是不贊成使用的代碼,有點狡猾。 如果你在你的項目使用jQuery,你只需要用下面的代碼替換geoxml3.js文件中這樣的功能:

geoXML3.fetchXML = function (url, callback) { 
    function timeoutHandler() { 
    callback(); 
    }; 
    $.ajax({ 
    type: "GET", 
    url: url, 
    success: function(xml) { 
     callback(xml); 
    } 
    }); 
}; 

希望它能幫助!

0

除了上面的答案,您必須考慮 1.在AJAX調用(緩存)和 中的IE的不同行爲2.您必須將DOM(節點)傳遞給回調函數;否則函數 將失敗 3.在IE中使用此方法的另一個警告是,字符串將其轉換爲XML DOM對象時存在限制。這意味着可以通過這種方式加載和呈現KML文件的大小限制。我在geoxml3用這個修改,使工作在IE Ajax調用:

geoXML3.fetchXML = function (url, callback) { 
    function timeoutHandler() { 
    callback(); 
    }; 
$.ajax({ 
    type:  "GET", 
    cache:  false,  
    url: url, 
    success: function(xml) { 
     var xmldom = createXMLDocument(xml); 
     callback(xmldom); 
    } 
}); 

一個字符串轉換爲XML DOM採取這裏看看http://www.w3schools.com/dom/dom_parser.asp

function createXMLDocument(strResponse) 
{ 
    if (window.DOMParser) 
    { 
    parser=new DOMParser(); 
    xmlDoc=parser.parseFromString(strResponse,"text/xml"); 
    } else // Internet Explorer 
    { 
     xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
     xmlDoc.async=false; 
    xmlDoc.loadXML(strResponse); 
    } 
    return xmlDoc; 
}