2012-03-26 12 views
0

Ich habe eine Karte zeigt, die eine XML-Datei liest; es ist alles sehr einfach und kopiert von hier: http://geochalkboard.wordpress.com/2009/03/30/reading-xml-files-with-the-google-maps-api/Google Map Javascript MarkerManager Marker nicht

Meine Version ist hier: http://www.cloudfund.me/maps/mashup.html und die Daten-Datei zu lesen ist, ist hier: converted.xml im selben Verzeichnis.

ich keine Punkte überhaupt, wenn ich es laufen. Ich habe ein paar Konsolen angemeldet, um zu sehen, ob ich etwas sehen kann, aber was das betrifft, läuft es einfach ohne Probleme durch. Die Datei lädt sich gut, und ich kann den Code ohne Probleme durch alle Zeilen (208 in diesem Beispiel) sehen.

Die nur Warnung ich bekomme ist die Ressource interpretiert als andere als undefiniert 'eine weitergegeben; nachdem ich mir einige der anderen Threads angeschaut habe, kann ich nichts sehen, was hilft - keine leeren src-Verbindungen, etc. Soweit ich das beurteilen kann, sollte dies auch nicht daran hindern, die Punkte zu markieren.

Hier ist der wahre Kicker - in dem Versuch, diesen Fehler zu verfolgen, ich eine genaue Replik des ursprünglichen Codes auf meinem eigenen Server eingerichtet, und einen Fehler über Nullfelder, die ich einige bedingten Code zum Sortieren hinzugefügt; Diese Version funktioniert auf meinem Server. Dies ist austin.html im selben Verzeichnis (sorry, kann nicht in meinen ersten Beiträgen mehr als zwei Links tun!)

Also - mein Code ist dies:

<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> 

Antwort

0

Sie denken einen Tippfehler haben. In Ihrem Code, sind Sie eine unvollständige URL für die API ziehen:

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

Der verirrte // scheint aus dem Code zu werfen.

Obwohl, um ehrlich zu sein, das Ursprungs Beispiel (und austin.html) nicht genau arbeiten, wie man es sollte sich vorstellen würde. Die Punkte werden zwar gerendert, beim Auszoomen findet jedoch kein effektives Clustering statt. Ich vermute, dass der 2.0-Zweig der API auf eine neuere Version verschoben wurde und dadurch eine gewisse Inkompatibilität entstand.

empfehlen, dass Sie diese neu schreiben in API-Version 3. Es ist ein Cluster-Manager, der sehr gut für sie funktioniert.

Siehe http://tools.voanews2.com/nuclear_reactors/

+0

Vielen Dank! Ich werde zuerst diese URL sehen ... Hmm, auf der zweiten. Ich bin ein kompletter Neuling (daher beginnend mit dem Code von jemand anderem). Das könnte eine Weile dauern. – Withnail

+0

Ich habe diesen Tippfehler beseitigt, aber immer noch nichts getan. Bah. Ist der v3-Code-Gong deutlich anders? – Withnail

+0

Die URL beginnend mit '//' ist kein Tippfehler, sondern ein ** Protokoll relative URL ** (http://paulirish.com/2010/the-protocol-relative-url/). Dies führt dazu, dass das maps-Skript mit demselben Protokoll (http oder https) wie die umgebende Seite geladen wird. – gapple