Abbruch nach 10 Adressen
Hallöchen,
auch wenn der thread schon nach drei Jahren gut abgehangen ist - er hat mir sehr geholfen! Vielen Dank!
Allerdings habe ich ein Problem, dass nicht mehr als 10 Adressen geocodiert und auf der Karte angezeigt werden. Es kommt der Abbruch nach 10 Adressen mit dem Javascript-Error "a is not definded".
Der Abbruch kommt nicht nachvollziehbar sondern zufällig - eigentlich wie man es beim asynchronen AJAX nicht anders erwarten kann ;-)
Hat jemand hier eine Idee? Ich habe den zitierten Code verwendet, lediglich Kartengröße, Adressen und Icons angepasst.
Vielen Dank und Grüße!
Minze
Gerade nochmal gesucht und getestet. Funktioniert einwandfrei:
testxml.html (XXXXX... da gehört der API Key rein)HTML Alles anzeigen<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>GMAPS XML TEST</title> <script src="http://maps.google.com/maps?file=api&v=2&key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" type="text/javascript"></script> </head> <body> <div id="map_canvas" style="width: 500px; height: 500px"></div> <div id="filialen" style="font-size: 18px; font-weight: bold; color: Green;"><p style="border-bottom-style: dotted; border-bottom-width: 2px; border-bottom-color: Green; width: 500px;">Standorte</p></div> <div id="adressen"></div> <script type="text/javascript"> //<![CDATA[ if (GBrowserIsCompatible()) { var adressen_html = ""; var gmarkers = []; var i = 0; // EIGENES MARKERICON var baseIcon = new GIcon(); baseIcon.image = "http://www.picbutler.de/bild/117940/markerq9lz3.gif"; baseIcon.iconSize = new GSize(64, 64); baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png"; baseIcon.shadowSize = new GSize(70, 64); baseIcon.iconAnchor = new GPoint(30, 50); baseIcon.infoWindowAnchor = new GPoint(30, 30); //MARKER ERZEUGEN function createMarker(point,name,html) { var marker = new GMarker(point, {icon:baseIcon}); GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); map.setCenter(marker.getLatLng(), 14, G_NORMAL_MAP) }); gmarkers[i] = marker; adressen_html += '<a href="javascript:openMarker(' + i + ')">' + name + '</a><br />'; document.getElementById("adressen").innerHTML = adressen_html; i++; return marker; } function openMarker(i) { GEvent.trigger(gmarkers[i], "click"); } var map = new GMap2(document.getElementById("map_canvas")); map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); map.setCenter(new GLatLng(51.165691,10.451526), 6); var geocoder = new GClientGeocoder(); var request = GXmlHttp.create(); request.open("GET", "data.xml", true); request.onreadystatechange = function() { if (request.readyState == 4) { var xmlDoc = GXml.parse(request.responseText); var markers = xmlDoc.documentElement.getElementsByTagName("marker"); for (var i = 0; i < markers.length; i++) { var label = markers[i].getAttribute("adresse"); var html = markers[i].getAttribute("adresse"); var adresse = markers[i].getAttribute("adresse"); geoCoding( label, adresse, html ); } } } request.send(null); function geoCoding(name, address, html) { if (geocoder) { geocoder.getLatLng( address, function( point ) { var marker = createMarker(point, name, html); map.addOverlay( marker ); map.setCenter(); } ); } } } //]]> </script> </body> </html>und die dazugehörige
data.xmlXML<?xml version="1.0" encoding="utf-8" ?> <markers> <marker adresse="Konrad-Adenauer-Platz 14, 40210 Düsseldorf" /> <marker adresse="Schadowplatz 12, 40212 Düsseldorf " /> <marker adresse="Hindenburgstr. 112, 41061 Mönchengladbach" /> <marker adresse="Holzheimer Weg 44, 41464 Neuss" /> </markers>
EDIT: Hier nochmal ein Screenshot, wie das Ergebnis am Bildschirm aussieht. Sollte im etwa das sein, was Du oben gesucht hast: