Google Maps API V3 - Dynamische Karte von XML, benutzerdefinierte Attribute unzugänglich?
Ich habe Aufbau einer asp.net Steuerung zum generieren einer google map basiert auf einer xml-Datei. Ich habe die Karte arbeiten, sowie den popup-Fenstern (infoWindows). Leider, aus irgendeinem Grund kann ich nicht verwenden, die benutzerdefinierte Attribute in der XML-Datei füllen Sie das Infofenster für jeden marker. Ein null-Wert wird zurückgegeben, wenn ich rufe:
var name = Marker[i].getAttribute("name");
Habe ich neu geschrieben, dieser code mehrere verschiedene Möglichkeiten, und ich kann immer noch nicht auf den Wert zugreifen. Ich weiß, dass es existiert in der xml, so dass ich hoffte, dass es sein könnte, jemand hier mit fortgeschrittenen Kenntnissen der google maps api v3 und Parsen von xml über javascript wer könnte mir helfen, an die unten auf dieser. Ich habe die gerenderten html unten, ebenso wie der Inhalt der xml-Datei partnerLocations.xml.
HINWEIS: ich habe nutzen googleUtils.js Klasse, die von google bereitgestellt und ist hier erhältlich: http://gmaps-samples-v3.googlecode.com/svn/trunk/xmlparsing/util.js
testen.aspx (test-Seite, wo die Kontrolle durchgeführt wird) output:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"> </script>
<script type="text/javascript" src="/includes/js/googleUtils.js"></script>
<script type="text/javascript">
google.maps.event.addDomListener(window, 'load', function () {
var map = new google.maps.Map(document.getElementById('map_canvas'), {
zoom: 3,
center: new google.maps.LatLng(52.5,-117.5),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infoWindow = new google.maps.InfoWindow;
google.maps.event.addListener(map, 'click', function () {
infoWindow.close();
});
downloadUrl("/includes/xml/partnerLocations.xml", function (data) {
var markers = data.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var name = markers[i].getAttribute("name");
var windowContents = "<h3>" + name + "</h3>";
var marker = new google.maps.Marker({ position: latlng, map: map });
bindInfoWindow(marker, map, infoWindow, windowContents);
}
});
function bindInfoWindow(marker, map, infowindow, html) {
google.maps.event.addListener(marker, 'click', function () {
infowindow.setContent(html);
infowindow.open(map, marker);
});
}
});
</script>
<div id="map_canvas" style="width: 700px; height: 500px">
</div>
</html>
partnerLocations.xml:
<?xml version="1.0" encoding="UTF-8"?>
<markers>
<marker lat="37.401220" lng="-122.120604" name="PartnerB" address="StreetAddress" description="Thisisourpartner..."/>
<marker lat="37.413320" lng="-122.125604" name="PartnerB" address="StreetAddress" description="Thisisourpartner..."/>
<marker lat="37.433480" lng="-122.139062" name="PartnerC" address="StreetAddress" description="Thisisourpartner..."/>
<marker lat="37.445427" lng="-122.162307" name="PartnerD" address="StreetAddress" description="Thisisourpartner..."/>
</markers>
- Hast du einen link zu einem live-version Ihrer Karte? Mein Verdacht ist, dass die xml-Attribute zugänglich sind, aber Sie in ein problem mit dem fehlen der Funktion der Schließung auf Ihrem Marker (wenn Sie klicken Sie auf die Markierung, die "ich" - variable ist über das Ende des xml-also name, Adresse und Beschreibung sind nicht gültig).
- Hi Geocodezip, ich weiß noch nicht, eine live-version, aber ich werde versuchen, nach einer heute Abend zu meinem persönlichen web-space für die überprüfung. Danke für das schauen Sie sich das an!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich google maps an meiner Website arbeiten und ich habe die xml-Datei und sehen Sie alle Orte,
Hier ist der code verwendet, wo ich test.xml ist deine xml-Datei. Ich hab auch die xml-Datei im gleichen Verzeichnis wie die Seite angezeigt, sondern
Yu können entweder oder oder, wenn die Verwendung von jquery mit $(document).bereit(Funktion(){
Hoffe es hilft
Dank an alle, die betrachtet diese Frage, vor allem von @Geocodezip und @AdRock, kommentiert mit Vorschlägen! Dieses Problem, wie es sich herausstellt, war überhaupt kein Thema, dies hatte mit der Tatsache zu tun, dass ich mit diesem code auf localhost. Einmal habe ich bereitgestellt, diese auf einen live-server funktionierte alles wie erwartet.