2012-03-26 109 views
0

我有一張讀取XML文件的地圖;這一切都非常簡單,複製從這裏: http://geochalkboard.wordpress.com/2009/03/30/reading-xml-files-with-the-google-maps-api/Google Map javascript MarkerManager標記不顯示

我的版本是在這裏: http://www.cloudfund.me/maps/mashup.html和數據文件,它的閱讀是在這裏: converted.xml在同一目錄下。

我沒有得到任何意見,當我運行它。我把一些控制檯登錄,看看我能否看到任何東西,但就這一點而言,它只是順利運行而已。該文件加載好了,我可以看到所有行(本例中爲208)的代碼循環沒有任何問題。

只有警告我得到的是'資源解釋爲其他通過未定義的'一個;看了一些其他的線程,我看不到任何有用的東西 - 沒有空的src鏈接等。據我所知,這也不應該阻止它標記點。

這裏是真正的踢球者 - 在試圖追蹤這個錯誤時,我在自己的服務器上設置了原始代碼的精確副本,並且獲得了有關空字段的錯誤,我添加了一些條件代碼進行排序;這個版本在我的服務器上工作。這是在同一目錄austin.html(對不起,不能做我的第一個帖子兩個以上的鏈路!)

所以 - 我的代碼是這樣的:

<title>Test </title> 


<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=AIzaSyDgybFoyn3i5j_6d7ul7p2dPNQ5b1xOWnk" 
     type="text/javascript">console.log("Loaded Maps API");</script> 

      <script src="http://gmaps-utility-library.googlecode.com/svn/trunk/markermanager/release/src/markermanager.js">console.log("MarkerManager");</script> 


<script type="text/javascript"> 
console.log("Into Main Script"); 
function initialize() { 
    if (GBrowserIsCompatible()) { 
    map = new GMap2(document.getElementById("map_canvas")); 
    map.setCenter(new GLatLng(51.39906378, -2.449545605), 13); 
    map.setUIToDefault(); 
    map.addControl(new GLargeMapControl()); 
    map.addControl(new GMapTypeControl()); 
    map.addMapType(G_PHYSICAL_MAP); 
    map.setMapType(G_PHYSICAL_MAP); 
    console.log("Reached end of map initialising"); 
    addMarkersFromXML(); 
    console.log("MarkersfromXML") 
    } 
} 

function addMarkersFromXML(){ 
    var batch = []; 
    mgr = new MarkerManager(map); 

    var request = GXmlHttp.create(); 
    console.log("About to open converted.xml") 
    request.open('GET', 'converted.xml', true); 
    console.log("Opened Converted.xml") 
    request.onreadystatechange = function() { 
    if (request.readyState == 4 && request.status == 200) 
{ 
    var xmlDoc = request.responseXML; 
    var xmlrows = xmlDoc.documentElement.getElementsByTagName("row"); 

    for (var i = 0; i < xmlrows.length; i++) { 
     var xmlrow = xmlrows[i]; 
     console.log("Running through row number",i) 
     var xmlcellLongitude = xmlrow.getElementsByTagName("longitude")[0]; 
     console.log(xmlcellLongitude); 
     var xmlcellLatitude = xmlrow.getElementsByTagName("latitude")[0]; 
     var point = new GLatLng(parseFloat(xmlcellLatitude.firstChild.data),parseFloat(xmlcellLongitude.firstChild.data)); 

     //get the PAO 
     var xmlcellAssetName = xmlrow.getElementsByTagName("pao")[0]; 
     console.log(xmlcellAssetName); 
     var celltextAssetName = xmlcellAssetName.firstChild.data; 

     //get the area 
     var xmlcellArea = xmlrow.getElementsByTagName("area")[0]; 
     console.log(xmlcellArea); 
     var celltextArea = xmlcellArea.firstChild.data; 

     //get the land type 
     var xmlcellLandType = xmlrow.getElementsByTagName("landtype")[0]; 
     console.log(xmlcellLandType); 
     var celltextLandType = xmlcellLandType.firstChild.data; 

     //get the Planning Permissions 
     var xmlcellPlanning = xmlrow.getElementsByTagName("planning")[0]; 
     console.log(xmlcellPlanning); 
     var celltextPlanning = xmlcellPlanning.firstChild.data; 

     var htmlString = "Asset Name: " + celltextAssetName + "<br>" + "Size: " + celltextArea + "<br>" + "Land Type: " + celltextLandType + "<br>" + "Planning Permissions: " + celltextPlanning; 
     //var htmlString = 'yes' 
     var marker = createMarker(point,htmlString); 
     batch.push(marker); 

    } 

    mgr.addMarkers(batch,50); 
    mgr.refresh(); 

    } 
    } 
request.send(null); 

    } 

function createMarker(point,html) { 
     var marker = new GMarker(point); 
     GEvent.addListener(marker, "click", function() { 
     marker.openInfoWindowHtml(html); 
     }); 
     return marker; 
} 
    </script> 
</head> 
    <body onload="initialize()" onunload="GUnload()"> 
    <div id="map_canvas" style="width: 1100px; height: 700px"></div> 
    </body> 
</html> 

回答

0

想你有一個錯字。在你的代碼,你拉一個不完整的URL的API:

<script src="//maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=AIzaSyDgybFoyn3i5j_6d7ul7p2dPNQ5b1xOWnk"

防止無關//似乎被關閉拋出的代碼。

儘管,說實話,原始示例(和austin.html)並不像人們想象的那樣應該如此。點被渲染,但縮小時沒有發生有效的聚類。懷疑API的2.0分支已經轉移到一個更新的版本並且創建了一些不兼容的地方。

建議您在API版本3中重寫此版本。有一個集羣管理器可以很好地工作。

請參閱http://tools.voanews2.com/nuclear_reactors/

+0

謝謝!我先看看那個網址......嗯,第二個。我是一個完全新手(因此從別人的代碼開始)。所以這可能需要一段時間。 – Withnail 2012-03-26 15:31:26

+0

我已經清除了那個錯字,但仍然沒有做任何事情。呸。 v3代碼鑼是否有顯着不同? – Withnail 2012-03-26 15:38:27

+0

以'//'開頭的網址不是拼寫錯誤,而是**協議相對網址**(http://paulirish.com/2010/the-protocol-relative-url/)。這將導致地圖腳本作爲包含頁面加載相同的協議(http或https)。 – gapple 2012-03-26 15:47:38

相關問題