-1

試圖在我的應用程序中加載下面的KML文件。我可以從瀏覽器本身訪問該文件。但該文件不在谷歌地圖中呈現。試圖檢查KML圖層狀態,得到一個奇怪的結果爲「undefined」。我不知道我錯過了什麼。請幫助我使用Google地圖研究KML圖層。無法加載我本地服務器中的kml文件?

有趣的事實: KML層在谷歌地圖被渲染,如果我用谷歌的KML網址http://gmaps-samples.googlecode.com/svn/trunk/ggeoxml/cta.kml。我不知道爲什麼谷歌地圖從谷歌服務器呈現KML層。以及爲什麼它不從我的服務器呈現KML圖層(http://www.mylocalIPAddress.com/WebModule/polygon.kml)。但我確定沒有任何東西阻止我的KML文件。如果我在瀏覽器中擊中了URL。我可以查看該文件。所以沒有任何東西阻止文件。但不知道爲什麼我不能加載我的kml文件。

KML文件:

<?xml version="1.0" encoding="UTF-8"?> 
<kml xmlns="http://www.opengis.net/kml/2.2"> 
    <ScreenOverlay> 
    <name>Absolute Positioning: Top left</name> 
    <Icon> 
     <href>http://developers.google.com/kml/documentation/images/top_left.jpg</href> 
    </Icon> 
    <overlayXY x="0" y="1" xunits="fraction" yunits="fraction"/> 
    <screenXY x="0" y="1" xunits="fraction" yunits="fraction"/> 
    <rotationXY x="0" y="0" xunits="fraction" yunits="fraction"/> 
    <size x="0" y="0" xunits="fraction" yunits="fraction"/> 
    </ScreenOverlay> 
</kml> 

的JavaScript:

google.maps.visualRefresh = true; 
var map; 
function initialize() { 
    // Specifies the google Map properties 
    map = new google.maps.Map(document.getElementById('map-canvas'), { 
     zoom : 3, 
     center : new google.maps.LatLng(0, 0), 
     mapTypeId : google.maps.MapTypeId.ROADMAP 
    }); 
    var layer = new google.maps.KmlLayer('http://www.mylocalIPAddress.com/WebModule/polygon.kml'); 
    layer.setMap(map); 
    console.log(layer.getStatus()); 
} 
google.maps.event.addDomListener(window, 'load', initialize); 

**特別提示:** 當檢查谷歌鏈接的響應,我有以下

_xdc_._nox6ih && _xdc_._nox6ih([0,"kml:cOyYrFGigX5u4USCpzso8ggEWKR7NP4TNfjRaORI","|ks:;dc:tb;ts:46343661|kv:3|api:3",["Chicago Transit Map","Chicago Transit Authority train lines","Chicago Transit Authority train lines"],[[41.721877,-87.8929],[42.072787,-87.606048]],[["gfd29185067c55f5f"],["g5e295bda04f08836"],["ga24949030bee7e8c"],["g55e98e4a4c0ba15f"],["g51d583df1e7a5451"],["g72b37441838ae58e"],["g4da782bd5142613c"],["ge63204f1f8e4087a"]],1,[["client","2"]],42,[["ks",";dc:tb;ts:46343661"],["kv","3"],["api","3"]]]) 

當我檢查了我的服務器的響應再次,我有以下

_xdc_._ghavva && _xdc_._ghavva([0,null,null,null,null,null,4,[["client","2"]]]) 

我不知道爲什麼我的反應越來越空。我相信由於空響應,Google地圖無法呈現KML文件。

+0

*因此沒有任何東西阻止文件* 您如何確定? **這文件必須公佈向所有用戶。** 您可以從計算機上加載此文件,並不意味着每個人都可以訪問此文件。 檢查你的防火牆設置,通常防火牆應該阻止這樣的請求(但可能允許他們從你自己的網絡) –

回答

0

通過解析geoxml3.js庫解決了這個問題。

將kml文件更改爲xml文件。並用geoxml3庫解析xml文件。現在我可以在我的應用程序中加載KML文件。

我已解析的腳本如下。

var geoXml = new geoXML3.parser({ 
    map: map, 
    singleInfoWindow: true 
    }); 
geoXml.parse('polygon.xml'); 

提示 我不知道它是否是周圍或不工作。但它解決了我的問題。請引導我是否通過寶貴的意見來糾正錯誤。

1

您是否在服務器上添加了KML的MIME類型?

嘗試添加到您的.htaccess文件:

AddType application/vnd.google-earth.kml+xml kml 
AddType application/vnd.google-earth.kmz  kmz 
+0

我正在使用JBoss作爲我的服務器。您能否與我分享JBoss Server中.htaccess的文件名。 – ArunRaj

+0

對不起,我只用過Apache服務器。本頁面在第三篇文章中爲您提供了一個可能的解決方案,但是它從2009年開始可能會過時。祝你好運! https://community.jboss.org/thread/65562?start=0&tstart=0&_sscc=t – flauntster

+0

感謝您的回覆。我正在用你的方式工作。如果我已經解決了問題,我會公佈一次結果。 – ArunRaj

相關問題