Dieselben großartigen Karten plus SLA, Support und Kontrolle über die Anzeigen
Das Google Maps-API wird regelmäßig erweitert, indem neue Funktionalitäten und Funktionen hinzugefügt werden, die oft zuerst auf der Website maps.google.de veröffentlicht werden. In diesem Abschnitt werden diese Services behandelt. Hinweis: Da die genaue Definition eines "Service" schwierig ist, enthält dieser Abschnitt viele verschiedene Themen. Es geht hier sozusagen um alle Themen, die sich nicht in anderen Abschnitten unterbringen ließen.
Das Google Maps-API exportiert eine Factory-Methode zum Erstellen von browserneutralen XmlHttpRequest()-Objekten, die in neueren Versionen von Internet Explorer, Firefox und Safari funktionieren. Wie bei allen XmlHttpRequests müssen sich alle abgerufenen Dateien in Ihrer lokalen Domain befinden. Das folgende Beispiel lädt die Datei myfile.txt herunter und zeigt deren Inhalt in einem JavaScript-alert() an:
var request = GXmlHttp.create();
request.open("GET", "myfile.txt", true);
request.onreadystatechange = function() {
if (request.readyState == 4) {
alert(request.responseText);
}
}
request.send(null);
Das API exportiert auch eine einfachere GDownloadUrl()-Methode für typische HTTP GET-Anfragen, wodurch die Überprüfung von XmlHttpRequest() readyState nicht mehr erforderlich ist. Mithilfe von GDownloadUrl() lässt sich das obige Beispiel wie folgt darstellen:
GDownloadUrl("myfile.txt", function(data, responseCode) {
alert(data);
});
Sie können ein XML-Dokument mit der statischen Methode GXml.parse() analysieren, die als einziges Argument einen XML-String verwendet. Diese Methode ist mit den meisten modernen Browsern kompatibel, sie verursacht jedoch einen Ausnahmefehler, wenn der Browser keine native Unterstützung für die XML-Analyse bietet.
In diesem Beispiel wird eine statische Datei ("data.xml"), die eine Liste von Längen- und Breitenkoordinaten in XML enthält, mithilfe der Methode GDownloadUrl heruntergeladen. Sobald der Download abgeschlossen ist, wird das XML mit GXml analysiert und eine Markierung an jedem dieser Punkte in dem XML-Dokument erstellt.
var map = new GMap2(document.getElementById("map_canvas"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
// Download the data in data.xml and load it on the map. The format we
// expect is:
// <markers>
// <marker lat="37.441" lng="-122.141"/>
// <marker lat="37.322" lng="-121.213"/>
// </markers>
GDownloadUrl("data.xml", function(data, responseCode) {
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
map.addOverlay(new GMarker(point));
}
});
Beispiel anzeigen (xhr-requests.html). In diesem Beispiel wird eine externe XML-Datendatei data.xml verwendet.
Weitere Informationen hierzu finden Sie in der GXmlHttp- und der GXml-Klassenreferenz.
Die Geokodierung ist der Vorgang der Konvertierung von Adressen (z. B. "1600 Amphitheatre Parkway, Mountain View, CA") in geografische Koordinaten (z. B. geografische Breite 37.423021 und geografische Länge -122.083739), die Sie verwenden können, um Markierungen zu setzen oder die Karte zu positionieren. Das Google Maps-API umfasst einen Geokodierungs-Dienst, der direkt über eine HTTP-Anforderung oder mithilfe eines GClientGeocoder-Objekts aufgerufen werden kann.
Beachten Sie, dass die Geokodierung ein zeit- und ressourcenintensiver Vorgang ist. Wann immer dies möglich ist, sollten Sie Ihre Adressen im Voraus geokodieren (mithilfe des HTTP-Geokodierers oder eines anderen Geokodierungs-Services) und Ihre Ergebnisse mithilfe eines Geokodierungs-Caches speichern.
Sie können auf den Geokodierungs-Dienst des Google Maps-API über das GClientGeocoder-Objekt zugreifen. Mithilfe von GClientGeocoder.getLatLng() können Sie eine String-Adresse in ein GLatLng konvertieren. Diese Methode verwendet als Parameter eine zu konvertierende String-Adresse und eine Callback-Funktion, die ausgeführt werden soll, sobald die Adresse abgerufen wurde. Die Callback-Funktion ist erforderlich, da bei der Geokodierung eine Anforderung an die Google-Server gesendet wird, was einige Zeit dauern kann.
In diesem Beispiel wird eine Adresse geokodiert, eine Markierung am entsprechenden Punkt hinzugefügt und ein Infofenster geöffnet, das die Adresse anzeigt. Beachten Sie, dass das Callback als Funktionsliteral übergeben wird.
var map = new GMap2(document.getElementById("map_canvas"));
var geocoder = new GClientGeocoder();
function showAddress(address) {
geocoder.getLatLng(
address,
function(point) {
if (!point) {
alert(address + " not found");
} else {
map.setCenter(point, 13);
var marker = new GMarker(point);
map.addOverlay(marker);
marker.openInfoWindowHtml(address);
}
}
);
}
Beispiel anzeigen (geocoding-simple.html)
Sie können den Maps-API-Geokodierer so ändern, dass Ergebnisse in einem bestimmten Darstellungsbereich (als Ansichtsbegrenzung vom Typ GLatLngBounds ausgedrückt) mithilfe der Methode GClientGeocoder.setViewport() bevorzugt werden. Mithilfe der Methode GClientGeocoder.setBaseCountryCode() können Sie festlegen, dass Ergebnisse nur für eine bestimmte Domain (Land) zurückgegeben werden. Geokodierungsanforderungen können für alle Domains gesendet werden, in denen die Haupt-Google Maps-Anwendung die Möglichkeit zur Geokodierung bietet. Beispielsweise liefert die Suche nach "Toledo" andere Ergebnisse innerhalb der Domäne Spanien (http://maps.google.es), die durch den Ländercode "es" angegeben ist, als die Standarddomäne innerhalb der USA (http://maps.google.com).
Wenn Sie auf strukturierte Informationen zu einer Adresse zugreifen möchten, bietet GClientGeocoder auch eine getLocations()-Methode, die ein JSON-Objekt zurückgibt, das aus den folgenden Informationen besteht:
Statusrequest - Der Anforderungstyp. In diesem Fall lautet er immer geocode.code - Ein Antwortcode (ähnlich den HTTP-Statuscodes), der angibt, ob die Geokodierungsanforderung erfolgreich war. Näheres zu den Codes finden Sie in der vollständigen Liste der Statuscodes.Placemark - Es können mehrere Ortsmarken zurückgegeben werden, wenn der Geokodierer mehrere Übereinstimmungen findet.address - Eine ansprechend formatierte Version der Adresse mit richtiger Groß-/Kleinschreibung.AddressDetails - Die Adresse, die als xAL oder eXtensible Address Language formatiert wurde (ein internationaler Standard für die Formatierung von Adressen).Accuracy - Ein Attribut, das angibt, wie genau die Adresse geokodiert werden konnte. Näheres zu diesem Attribut finden Sie in der Liste der möglichen Werte.Point - Ein Punkt im 3D-Raum.coordinates - Die geografische Länge, Breite und Höhe der Adresse. In diesem Fall ist die Höhe immer auf 0 gesetzt.Hier sehen Sie das JSON-Objekt, das vom Geokodierer für die Adresse der Google-Firmenzentrale zurückgegeben wird:
{
"name": "1600 Amphitheatre Parkway, Mountain View, CA, USA",
"Status": {
"code": 200,
"request": "geocode"
},
"Placemark": [
{
"address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
"AddressDetails": {
"Country": {
"CountryNameCode": "US",
"AdministrativeArea": {
"AdministrativeAreaName": "CA",
"SubAdministrativeArea": {
"SubAdministrativeAreaName": "Santa Clara",
"Locality": {
"LocalityName": "Mountain View",
"Thoroughfare": {
"ThoroughfareName": "1600 Amphitheatre Pkwy"
},
"PostalCode": {
"PostalCodeNumber": "94043"
}
}
}
}
},
"Accuracy": 8
},
"Point": {
"coordinates": [-122.083739, 37.423021, 0]
}
}
]
}
In diesem Beispiel wird die Methode getLocations() verwendet, um Adressen zu geokodieren und die ansprechend formatierte Version der Adresse sowie den aus zwei Buchstaben bestehenden Ländercode aus dem JSON-Objekt zu extrahieren und im Infofenster anzuzeigen.
var map;
var geocoder;
function addAddressToMap(response) {
map.clearOverlays();
if (!response || response.Status.code != 200) {
alert("\"" + address + "\" not found");
} else {
place = response.Placemark[0];
point = new GLatLng(place.Point.coordinates[1],
place.Point.coordinates[0]);
marker = new GMarker(point);
map.addOverlay(marker);
marker.openInfoWindowHtml(place.address + '<br>' +
'<b>Country code:</b> ' + place.AddressDetails.Country.CountryNameCode);
}
}
Beispiel anzeigen (geocoding-extraction.html)
Der Begriff Geokodierung bezeichnet im Allgemeinen die Umwandlung einer visuell lesbaren Adresse in einen Punkt auf der Karte. Der Umkehrprozess, die Umwandlung eines Punkts in eine visuell lesbare Adresse, wird als umgekehrte Geokodierung bezeichnet.
Die Methode GClientGeocoder.getLocations() unterstützt sowohl die standardmäßige als auch die umgekehrte Geokodierung. Wenn Sie mit dieser Methode ein GLatLng-Objekt anstatt einer String-Adresse übergeben, führt der Geokodierer einen umgekehrten Lookup durch und gibt ein strukturiertes JSON-Objekt der nächstgelegenen adressierbaren Position durch. Beachten Sie, dass der nächstgelegene adressierbare Standort in einiger Entfernung von den ursprünglichen Werten für die geografische Breite und geografische Länge der Anfrage liegen kann, wenn der angegebene GLatLng-Wert keine exakte Übereinstimmung mit einer adressierbaren Position aufweist.
Hinweis: die umgekehrte Geokodierung ist keine exakte Wissenschaft. Der Geokodierer versucht, die nächstgelegenene adressierbare Position innerhalb einer bestimmten Toleranz zu finden. Falls keine Übereinstimmung gefunden wird, gibt der Geokodierer einen G_GEO_UNKNOWN_ADDRESS (602)-Statuscode zurück.
var map;
var geocoder;
var address;
function initialize() {
map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(40.730885,-73.997383), 15);
map.addControl(new GLargeMapControl);
GEvent.addListener(map, "click", getAddress);
geocoder = new GClientGeocoder();
}
function getAddress(overlay, latlng) {
if (latlng != null) {
address = latlng;
geocoder.getLocations(latlng, showAddress);
}
}
function showAddress(response) {
map.clearOverlays();
if (!response || response.Status.code != 200) {
alert("Status Code:" + response.Status.code);
} else {
place = response.Placemark[0];
point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]);
marker = new GMarker(point);
map.addOverlay(marker);
marker.openInfoWindowHtml(
'<b>orig latlng:</b>' + response.name + '<br/>' +
'<b>latlng:</b>' + place.Point.coordinates[0] + "," + place.Point.coordinates[1] + '<br>' +
'<b>Status Code:</b>' + response.Status.code + '<br>' +
'<b>Status Request:</b>' + response.Status.request + '<br>' +
'<b>Address:</b>' + place.address + '<br>' +
'<b>Accuracy:</b>' + place.AddressDetails.Accuracy + '<br>' +
'<b>Country code:</b> ' + place.AddressDetails.Country.CountryNameCode);
}
}
Beispiel anzeigen (geocoding-reverse.html)
GClientGeocoder verfügt standardmäßig über einen clientseitigen Cache. Der Cache speichert Geokodierer-Antworten, was bei einer erneuten Geokodierung von Adressen schnellere Antworten ermöglicht. Sie können das Caching deaktivieren, indem Sie null an die setCache()-Methode des GClientGeocoder-Objekts übergeben. Es wird jedoch empfohlen, das Caching aktiviert zu lassen, da es die Leistung steigert. Um den von GClientGeocoder verwendeten Cache zu ändern, rufen Sie setCache() auf und geben Sie den neuen Cache ein. Um den aktuellen Cache zu leeren, rufen Sie die Methode reset() für den Geokodierer oder direkt für den Cache auf.
Entwickler können eigene clientseitige Caches erstellen. In diesem Beispiel wird ein Cache konstruiert, der im Voraus berechnete Geokodierer-Antworten für sechs Hauptstädte in Ländern enthält, die vom Geokodierungs-API abgedeckt werden. Zuerst wird ein Array von Geocode-Antworten erstellt. Als Nächstes wird ein benutzerdefinierter Cache erstellt, der einen standardmäßigen GeocodeCache erweitert. Nachdem der Cache definiert wurde, wird die setCache()-Methode aufgerufen. Die im Cache gespeicherten Objekte werden nicht streng überprüft, daher können Sie auch andere Informationen (z. B. die Einwohnerzahl) im Cache speichern.
// Builds an array of geocode responses for the 6 capitals
var city = [
{
name: "Washington, DC",
Status: {
code: 200,
request: "geocode"
},
Placemark: [
{
address: "Washington, DC, USA",
population: "0.563M",
AddressDetails: {
Country: {
CountryNameCode: "US",
AdministrativeArea: {
AdministrativeAreaName: "DC",
Locality: {
LocalityName: "Washington"
}
}
},
Accuracy: 4
},
Point: {
coordinates: [-77.036667, 38.895000, 0]
}
}
]
},
... // etc., and so on for other cities
];
var map;
var geocoder;
// CapitalCitiesCache is a custom cache that extends the standard GeocodeCache.
// We call apply(this) to invoke the parent's class constructor.
function CapitalCitiesCache() {
GGeocodeCache.apply(this);
}
// Assigns an instance of the parent class as a prototype of the
// child class, to make sure that all methods defined on the parent
// class can be directly invoked on the child class.
CapitalCitiesCache.prototype = new GGeocodeCache();
// Override the reset method to populate the empty cache with
// information from our array of geocode responses for capitals.
CapitalCitiesCache.prototype.reset = function() {
GGeocodeCache.prototype.reset.call(this);
for (var i in city) {
this.put(city[i].name, city[i]);
}
}
map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(37.441944, -122.141944), 6);
// Here we set the cache to use the UsCitiesCache custom cache.
geocoder = new GClientGeocoder();
geocoder.setCache(new CapitalCitiesCache());
Beispiel anzeigen (geocoding-cache.html)
Sie können auf den Geokodierer des Maps-API auch direkt mithilfe von serverseitigem Scripting zugreifen. Der clientseitige Geokodierer ist dieser Methode jedoch vorzuziehen. Jedoch ist sie zu Debugging-Zwecken nützlich oder für Fälle, in denen kein JavaScript-Objekt vom Typ GClientGeocoder verfügbar ist.
Um auf den Geokodierer des Maps-API zuzugreifen, senden Sie eine Anfrage an http://maps.google.com/maps/geo? mit den folgenden Parametern im URI:
q (erforderlich) – die Adresse, die Sie geokodieren möchtenkey (erforderlich) – Ihr API-Schlüsselsensor (erforderlich) – gibt an, ob die Geokodierungsanfrage von einem Gerät mit einem Standortsensor kommt. Dieser Wert muss entweder true oder false sein.output (erforderlich) – das Format, in dem die Ausgabe generiert werden soll. Die Optionen sind xml, kml, csv oder json (Standard).ll (optional) – der Wert {geografische Breite,geografische Länge} des Darstellungsbereichs als kommagetrennter String ausgedrückt (z. B. "ll=40.479581,-117.773438" ). Dieser Parameter ist nur von Bedeutung, wenn der Parameter spn ebenfalls an den Geokodierer übergeben wird.spn (optional) – die "Spanne" des Darstellungsbereichs, ausgedrückt als kommagetrennter String mit {geografische Länge,geografische Breite} (z. B. "spn=11.1873,22.5" ). Dieser Parameter ist nur von Bedeutung, wenn der Parameter ll ebenfalls an den Geokodierer übergeben wird. gl (optional) – Der Ländercode, der als zweistelliger ccTLD-Wert ("top-level domain") angegeben wird.Hinweis: The gl and spn,ll viewport parameters will only influence, not fully restrict, results from the geocoder.
In diesem Beispiel werden die geografischen Koordinaten der Google-Firmenzentrale angefordert:
http://maps.google.com/maps/geo?q=1600+Amphitheatre+Parkway,+Mountain+View,+CA&output=xml&sensor=true_or_false&key=abcdefg
Wir haben in diesem Beispiel bewusst den sensor-Parameter als Variable true_or_false beibehalten, um zu betonen, dass Sie diesen Wert auf true oder false setzen müssen.
Wenn Sie als Ausgabeformat json angeben, wird die Antwort als JSON-Objekt formatiert. Wenn Sie xml oder kml angeben, wird sie in KML zurückgegeben. Die XML- und die KML-Ausgabe sind abgesehen von den MIME-Typen identisch.
Beispielsweise gibt der Geokodierer für "1600 amphitheatre mountain view ca" die folgende Antwort zurück:
<kml xmlns="http://earth.google.com/kml/2.0">
<Response>
<name>1600 amphitheatre mountain view ca</name>
<Status>
<code>200</code>
<request>geocode</request>
</Status>
<Placemark>
<address>
1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA
</address>
<AddressDetails Accuracy="8">
<Country>
<CountryNameCode>US</CountryNameCode>
<AdministrativeArea>
<AdministrativeAreaName>CA</AdministrativeAreaName>
<SubAdministrativeArea>
<SubAdministrativeAreaName>Santa Clara</SubAdministrativeAreaName>
<Locality>
<LocalityName>Mountain View</LocalityName>
<Thoroughfare>
<ThoroughfareName>1600 Amphitheatre Pkwy</ThoroughfareName>
</Thoroughfare>
<PostalCode>
<PostalCodeNumber>94043</PostalCodeNumber>
</PostalCode>
</Locality>
</SubAdministrativeArea>
</AdministrativeArea>
</Country>
</AddressDetails>
<Point>
<coordinates>-122.083739,37.423021,0</coordinates>
</Point>
</Placemark>
</Response>
</kml>
Wenn Sie eine kürzere Antwort vorziehen, die leichter zu analysieren ist, und keine speziellen Funktionen wie mehrere Ergebnisse oder eine bestimmte Formatierung benötigen, können Sie auch eine Ausgabe im csv-Format wählen. Eine Antwort, die im Format csv zurückgegeben wird, besteht aus vier durch Komma getrennten Zahlen:
Die folgenden Beispiele zeigen Antworten für drei Adressen, nach zunehmender Genauigkeit sortiert: "State St, Troy, NY", "2nd st & State St, Troy, NY" and "7 State St, Troy, NY"
200,6,42.730070,-73.690570 200,7,42.730210,-73.691800 200,8,42.730287,-73.692511
Für die Verwendung des Panorama-Objekts aus Street View ist Unterstützung für das Flash-Plug-in auf dem Client-Browser erforderlich.
Street View von Google bietet 360-Grad-Panorama-Ansichten von bestimmten Straßen im Abdeckungsbereich von Google Maps. Unten sehen Sie ein Beispiel für Street View.
Google Street View verwendet das Flash®-Plug-in, das von den meisten Browsern zur Anzeige dieser interaktiven Bilder unterstützt wird. Das Google Maps-API bietet jetzt den Service "Street View" zum Abrufen und Verändern des Bildmaterials aus Google Maps Street View!
GStreetviewPanorama-ObjektStreet View-Bilder werden durch die Verwendung des GStreetviewPanorama-Objekts unterstützt, das eine API-Schnittstelle zu einem Street View Flash®-Viewer bietet. Sie können Street View in Ihre Maps-API-Anwendung aufnehmen, indem Sie diese einfachen Schritte ausführen:
<div>-Element) für den Street View Flash®-Viewer.GStreetviewPanorama-Objekt und legen Sie es in dem Container ab.603.Das GStreetviewPanorama-Objekt erfordert das Vorhandensein eines Containerelements in seinem Konstruktor. Optional ermöglicht es Ihnen auch das Festlegen seiner Position mithilfe des Parameters GStreetviewPanoramaOptions. Sie können nach der Konstruktion setLocationAndPOV() für das Objekt aufrufen, um dessen Position und POV zu ändern.
Nachfolgend finden Sie weitere Informationen zu Containern und zum Festlegen von Positionen und Ansichtspunkten.
Für den Flash Viewer von Street View ist ein Container-DOM-Knoten erforderlich, in dem sein Inhalt angezeigt werden kann. Dabei handelt es sich häufig um ein <div>-Element. Für die optimale Anzeige von Panoramabildern wird eine Mindestgröße von 200 x 200 Pixeln empfohlen. Außerdem wird von der Verwendung umfangreicher Viewer abgeraten, da dies dazu führen kann, dass der Flash Viewer viel Arbeitsspeicher verbraucht und die Leistung des Browsers beeinträchtigt wird.
Der GStreetviewPanorama-Konstruktor erfordert einen container-Parameter, der das ursprüngliche Containerelement identifiziert, in dem der Street View Flash-Viewer angezeigt werden soll. Sie können hide() verwenden, um die Anzeige des GStreetviewPanorama-Objekts vorübergehend zu deaktivieren, oder show(), um die visuelle Anzeige des Viewers wieder zu aktivieren.
Falls Sie den Container für den Flash Viewer von Street View einmal ändern möchten, senden Sie ihm eine setContainer()-Methode und übergeben Sie ihm das neue Element, in dem er angezeigt werden soll. Falls die Größe des Containers verändert wird, können Sie dem GStreetviewPanorama-Objekt eine checkResize()-Methode senden, um zu erzwingen, dass dessen Größe an die neuen Abmessungen angepasst wird.
Sie können den Flash Viewer von Street View vollständig aus dem DOM entfernen und seinen Arbeitsspeicher freigeben, indem Sie dem Objekt die Methode remove() übergeben. Sie müssen diese Methode aufrufen, wenn Sie das Container-Element aus dem DOM entfernen möchten, da anderenfalls beim Client-Browser Speicherlecks entstehen.
Ein Street View-Bild besteht aus einer Position (die einem GLatLng-Wert entspricht) und einer bestimmten Ausrichtung (einem GPov-Wert), die gemeinsam die Ansicht für die Bildanzeige identifizieren. Diese beiden Parameter können bei der Konstruktion des Street View-Objekts mithilfe des optionalen Parameters GStreetviewPanoramaOptions angegeben werden.
Eine Liste der derzeit für Street View unterstützten Städte finden Sie in der Google Maps-Hilfe. Ob eine Position Street View-Daten unterstützt, lässt sich auf drei grundlegende Weisen herausfinden:
GLatLng einer als gültig bekannten Street View-Position speichern.GStreetviewOverlay-Kachel-Overlay untersuchen und das Straßennetz visuell prüfen. Straßen, die Street View unterstützen, sind auf dem Overlay blau markiert. Sie können dann mithilfe von Klickereignissen oder Geokodierungslogik unterstützte Position an GStreetviewPanorama-Objekte übergeben. (Siehe Street View-Overlays.)GStreetviewClient-Objekt können Sie Street View-Objekte abfragen, für die GLatLng-Werte angegeben sind. Das GStreetviewClient-Objekt unterstützt eine Reihe von Abfragen für die Suche nach Panoramadaten. (Siehe Client-Abfragen in Street View.)Beachten Sie, dass die beiden letzten Methoden ungenau sind: der Street View-Service erfordert in diesen Fällen keine genauen Breiten- und Längenangaben (die er in der Regel auch nicht erhält), sondern er sucht nach dem Vorhandensein von Panoramadaten "in der Nähe" eines bestimmten GLatLng.
Im folgenden Beispiel wird die anfängliche Breite und Länge, die für Street View verwendet werden soll, mithilfe von GStreetviewPanoramaOptions angegeben. Der POV wird leer gelassen, was eine Standardansicht Richtung Norden angibt.
var fenwayPark = new GLatLng(42.345573,-71.098326);
panoramaOptions = { latlng:fenwayPark };
var myPano = new GStreetviewPanorama(document.getElementById("pano"), panoramaOptions);
Beispiel anzeigen (streetview-simple.html)
Street View erfordert eine Unterstützung des Flash®-Plug-ins. Ihr Code sollte aus diesem Grund prüfen, ob das Plug-in zur Verfügung steht und im Browser des Nutzers verwendet werden kann. Dies können Sie in Ihrer Anwendung durchführen, indem Sie einen Ereignis-Listener für das error-Ereignis auf dem GStreetviewPanorama-Objekt registrieren. Das error-Ereignis übergibt einen Fehlercode, den Sie auswerten können.
Der untenstehende Beispielcode führt eine schnelle Prüfung der Unterstützung des Flash-Plug-ins aus und zeigt ein Benachrichtigungsdialogfeld an, wenn Flash nicht unterstützt wird.
var fenwayPark = new GLatLng(42.345573,-71.098326);
panoramaOptions = { latlng:fenwayPark };
myPano = new GStreetviewPanorama(document.getElementById("pano"), panoramaOptions);
GEvent.addListener(myPano, "error", handleNoFlash);
function handleNoFlash(errorCode) {
if (errorCode == 603) {
alert("Error: Flash doesn't appear to be supported by your browser");
return;
}
}
Die Street View-Position definiert die Platzierung des Kamerapunkts für ein Bild, jedoch nicht die Ausrichtung der Kamera. Zu diesem Zweck definiert das GPov-Objektliteral drei Eigenschaften:
yaw definiert den Rotationswinkel um den Kamerapunkt in Grad relativ zum geografischen Norden. Dieser Winkel wird im Uhrzeigersinn gemessen (90 Grad weist zum geografischen Osten).pitch definiert die Winkelabweichung ("nach oben" oder "nach unten") von der ursprünglichen, standardmäßigen Kameraneigung. Diese Kameraneigung ist meistens, aber nicht immer, horizontal ausgerichtet. (Beispielsweise weist ein auf einem Hügel aufgenommenes Bild vermutlich eine Standardneigung auf, bei der die Kamera nicht horizontal ausgerichtet ist.) Der Neigungswinkel wird aufwärts in negativen Werten gemessen (bis -90° gerade nach oben und im rechten Winkel zur Standardneigung). Abwärts wird er in positiven Werten gemessen (bis +90° gerade nach unten und im rechten Winkel zur Standardneigung).zoom definiert die Zoomstufe dieser Ansicht (die gewissermaßen das "Blickfeld" festlegt), wobei der Wert 0 angibt, dass die Ansicht vollständig herausgezoomt ist. Verschiedene Street View-Positionen bieten möglicherweise unterschiedlich hohe Zoomstufen.Standardmäßig sind diese Werte alle 0, wodurch eine Ansicht mit horizontaler Ausrichtung nach Norden und dem größtmöglichen Blickfeld definiert wird.
Wie bereits beschrieben, können Sie die Position und GPov für ein Panorama-Objekt bei dessen Konstruktion mithilfe des Parameters GStreetviewPanoramaOptions festlegen.
fenwayPark = new GLatLng(42.345573,-71.098326);
myPOV = {yaw:370.64659986187695,pitch:-20};
svOpts = {latlng:fenwayPark, pov:myPOV};
var myPano = new GStreetviewPanorama(document.getElementById("pano"), svOpts);
Sie können die Position und den POV auch mithilfe der Methode setLocationAndPOV()nach der Konstruktion des GStreetviewPanorama-Objekts festlegen. Im folgenden Beispiel wird ein GStreetviewPanorama-Objekt erstellt und anschließend seine Position und sein POV auf einen bestimmten Wert gesetzt.
var myPano = new GStreetviewPanorama(document.getElementById("pano"));
fenwayPark = new GLatLng(42.345573,-71.098326);
myPOV = {yaw:370.64659986187695,pitch:-20};
myPano.setLocationAndPOV(fenwayPark, myPOV);
Beispiel anzeigen (streetview-object.html)
Am einfachsten finden Sie über das GStreetviewOverlay-Objekt heraus, ob eine Straße Street View unterstützt. Erstellen Sie einfach ein Overlay dieses Typs und fügen Sie es zur Karte hinzu. Straßen, die Street View-Daten enthalten, werden dann auf der Karte mit blauen Umrissen markiert.
var map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(37.4419, -122.1419), 13);
svOverlay = new GStreetviewOverlay();
map.addOverlay(svOverlay);
Beispiel anzeigen (streetview-layer.html)
Wenn Sie wissen, dass ein geografischer Bereich Street View unterstützt, können Sie Logik hinzufügen, die auf das Anklicken von Straßen reagiert, für die Street View verfügbar ist, indem Sie das GStreetviewPanorama-Objekt ausfüllen.
var myPano = new GStreetviewPanorama(document.getElementById("pano"));
var map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(42.345573,-71.098326), 14);
svOverlay = new GStreetviewOverlay();
map.addOverlay(svOverlay);
GEvent.addListener(map,"click", function(overlay,latlng) {
myPano.setLocationAndPOV(latlng);
});
Beispiel anzeigen (streetview-click.html)
Wenn Sie wissen, dass eine bestimmte Position Street View unterstützt, können Sie die Positionsinformationen und den POV speichern und diese Informationen innerhalb des Objekts ablegen.
Für Benutzer ist es häufig nicht möglich oder nicht wünschenswert, durch visuelle Prüfung von GStreetviewOverlay herauszufinden, ob eine Straße Street View unterstützt. Aus diesem Grund bietet das API einen Service, der Street View-Daten programmatisch anfordert und abruft. Dieser Service wird durch die Verwendung des GStreetviewClient-Objekts ermöglicht.
Das GStreetviewClient-Objekt führt mithilfe von Googles Street View-Service Panoramadaten-Lookups aus. Da dieser Lookup asynchron erfolgt, erfordern die Methoden dieser Klasse, dass nach dem Empfang der Daten Callback-Funktionen ausgeführt werden. Alle angeführten Callbacks übergeben null, wenn kein Wert angezeigt wird. Überprüfen Sie innerhalb Ihrer Callback-Funktionen, ob dies der Fall ist.
Die GStreetviewClient-Methode getNearestPanoramaLatLng() ruft die GLatLng eines nahegelegenen Panorama-Bildes an einer gegebenen Position ab. (Diese wird mit GLatLng definiert.)
getNearestPanorama() und getPanoramaById() rufen stattdessen GStreetviewData-Objekte ab, die Metadaten zu dem jeweiligen Panorama-Objekt speichern. Diese Daten werden im untenstehenden Abschnitt beschrieben.
Die Struktur eines GStreetviewData-Objekts besteht aus drei Eigenschaften: location und copyright (die Informationen zu dem jeweiligen Bild enthalten, das gerade angezeigt wird), sowie links (das Informationen zu angrenzenden Panorama-Objekten liefert). Die Struktur dieser Eigenschaften wird nachfolgend beschrieben:
# The location property uses the GStreetviewLocation object literal
location: {
latlng: GLatLng,
pov: {
yaw: String,
pitch: String,
zoom: String
},
description: String,
panoId: String
}
copyright: String
# The links property uses the GStreetviewLink object literal
links[]: {
yaw: String,
description: String,
panoId: String
}
(Eine vollständige Beschreibung der Objektliterale GStreetviewLocation und GStreetviewLink finden Sie in der Maps-API-Referenz.)
Hinweis: the GStreetviewData.location property should not be confused with the window.location property. Wenn Sie versuchen, Daten aus der location-Eigenschaft dieses Objekts zu extrahieren, stellen Sie sicher, dass Sie tatsächlich eine Antwort vom Street View-Server erhalten haben (siehe unten). Anderenfalls nimmt die location-Eigenschaft standardmäßig den Wert window.locationan, was ein unerwartetes Verhalten hervorruft.
Wenn eine Anforderung an ein GStreetviewClient-Objekt erfolgreich ist, gibt es ein GLatLng- oder ein GStreetviewData-Objekt an die angegebene Callback-Funktion zurück. Da das Abrufen von Street View-Daten asynchron erfolgt, ist es jedoch möglich, dass das Client-Objekt diese Datenobjekte nicht abruft, weshalb Ihr Code nicht von deren Vorhandensein abhängig sein sollte. Stattdessen sollten Sie immer den von allen Anfragen zurückgegebenen code-Wert prüfen, der in jedem Fall zurückgegeben wird. Der untenstehende Code-Ausschnitt verdeutlicht dieses Konzept.
panoClient = new GStreetviewClient();
panoClient.getPanoramaById(panoData.location.panoId, processReturnedData);
function processReturnedData(panoData) {
if (panoData.code != 200) {
GLog.write('showPanoData: Server rejected with code: ' + panoData.code);
return;
}
// Code to actually process the GStreetviewData object is contained here
}
Nachfolgend ist eine vollständige Antwort dargestellt, die ein Beispiel für eine GStreetviewData-Struktur enthält:
{
location: {
latlng: GLatLng("42.345566, -71.098354")
pov: {
yaw: "370.64659986187695"
pitch: "-20"
zoom: "1"
}
description: "Yawkey Way"
panoId: "-KNGDaZvSQjMqug7ISM_CA"
}
copyright: "© 2008 Google"
links:[ {
yaw: "0"
description: "Yawkey Way"
panoId: "S142iWXa_4Fi7L7d8HKhuQ"
},
{
yaw: "0"
description: "Yawkey Way"
panoId: "2vFI79AjOpHTAYJSCKquFg"
}
]
}
Die untenstehende Beispielanwendung zeigt ein anfängliches Panorama-Objekt an, extrahiert dessen ID, speichert das verknüpfte Panorama-Objekt im zurückgegebenen GStreetviewData-Objekt und zeigt das diesem Street View-Objekt zugewiesene Datenset an. Jedes Mal, wenn der Nutzer auf "Weiter" klickt, wird der Prozess wiederholt, sodass sich der Nutzer eine Reihe von angrenzenden Panorama-Objekten nacheinander ansehen kann.
var map;
var myPano;
var panoClient;
var nextPanoId;
function initialize() {
var fenwayPark = new GLatLng(42.345573,-71.098326);
var fenwayPOV = {yaw:370.64659986187695,pitch:-20};
panoClient = new GStreetviewClient();
map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(fenwayPark, 15);
GEvent.addListener(map, "click", function(overlay,latlng) {
panoClient.getNearestPanorama(latlng, showPanoData);
});
myPano = new GStreetviewPanorama(document.getElementById("pano"));
myPano.setLocationAndPOV(fenwayPark, fenwayPOV);
GEvent.addListener(myPano, "error", handleNoFlash);
panoClient.getNearestPanorama(fenwayPark, showPanoData);
}
function showPanoData(panoData) {
if (panoData.code != 200) {
GLog.write('showPanoData: Server rejected with code: ' + panoData.code);
return;
}
nextPanoId = panoData.links[[0[].panoId;
var displayString = [[
"Panorama ID: " + panoData.location.panoId,
"LatLng: " + panoData.location.latlng,
"Copyright: " + panoData.copyright,
"Description: " + panoData.location.description,
"Next Pano ID: " + panoData.links[[0[].panoId
[].join("
");
map.openInfoWindowHtml(panoData.location.latlng, displayString);
GLog.write('Viewer moved to' + panoData.location.latlng);
myPano.setLocationAndPOV(panoData.location.latlng);
}
function next() {
// Get the next panoId
// Note that this is not sophisticated. At the end of the block, it will get stuck
panoClient.getPanoramaById(nextPanoId, showPanoData);
}
function handleNoFlash(errorCode) {
if (errorCode == 603) {
alert("Error: Flash doesn't appear to be supported by your browser");
return;
}
}
Beispiel anzeigen (streetview-data.html)
Mit dem Google Maps-API können Entwickler ab jetzt eine Instanz von Google Earth in Ihren Maps-API-Anwendungen modifizieren. Auf diese Instanz können Sie mittels der separaten Installation eines Google Earth-Plug-ins zugreifen. Die Google Earth-Kartenebene wird in einem separaten GMapType angezeigt, der in Aussehen und Navigation der eigentlichen Google Earth-Anwendung entspricht. So können Sie auch in dieser Kartenebene Perspektiven rotieren, Erhebungen sehen und Google Earth-KML-Daten in Ihrem Browser aufrufen.
Hinweis: the Google Earth Plug-in must be installed on the user's computer to use this Google Earth GMapType. Gegenwärtig ist dieses Plug-in nur für Microsoft Windows verfügbar. Eine vollständige Liste der Systemanforderungen finden Sie im Google Earth-API-Entwicklerhandbuch.
Das Google Earth-Plug-in für Windows steht unter folgender URL zur Verfügung:
http://dl.google.com/earth/plugin/GoogleEarthPluginSetup_en.exe
Sie können das Google Earth-Plug-in über sein eigenes API steuern, das sich vom Google Maps-API unterscheidet. Im Google Earth-API-Entwicklerhandbuch finden Sie ausführliche Informationen zur Verwendung des Plug-ins und des Google Earth-API.
Das Google Earth-Plug-in kann auch innerhalb des Google Maps-API instanziiert werden.
Um Ihrer Karte die Google Earth-Instanz hinzuzufügen, fügen Sie Ihrer Karte einfach mithilfe von GMap2.addmapType() die G_SATELLITE_3D_MAP hinzu. Sie können die Karte dann entweder so einrichten, dass dieser Kartentyp direkt (über GMap2.setMapType()) angezeigt wird, oder dem Nutzer die Auswahl dieses Kartentyps innerhalb eines GMapTypeControl gestatten (durch Hinzufügen eines Kartentyp-Bedienelements über GMap2.addControl()).
Mit dem folgenden Code wird der Kartentyp G_SATELLITE_3D_MAP der Karte hinzugefügt und die Karte explizit so eingerichtet, dass der Google Earth-Kartentyp innerhalb der Karte angezeigt wird. (Beim erstmaligen Klicken auf dieses Beispiel werden Sie aufgefordert, das Google Earth-Plug-in zu installieren.)
var map = new GMap2(document.getElementById("map_canvas"),{ size: new GSize(640,480) } );
map.setCenter(new GLatLng(42.366662,-71.106262), 11);
map.addMapType(G_SATELLITE_3D_MAP);
var mapControl = new GMapTypeControl();
map.addControl(mapControl);
map.setMapType(G_SATELLITE_3D_MAP);
Beispiel anzeigen (services-earth-plugin.html)
Wenn Sie eine lokale Suchfunktion zu Ihrer Website hinzufügen möchten, können Sie mithilfe des Google AJAX Search-API ein Bedienelement für die lokale Suche in Ihre Website einbetten. Dieses Bedienelement ist eine Unterklasse des GControl-Objekts und stellt ein gutes Beispiel für die Erstellung eines benutzerdefinierten Bedienelements dar.
Bevor Sie dieses Bedienelement zu Ihrer Maps-API-Anwendung hinzufügen, müssen Sie die URL für das Google AJAX Search-API hinzufügen und Ihren Maps-API-Schlüssel für diesen Service verwenden. Sie müssen außerdem die Stylesheets für dieses Bedienelement-Objekt laden, wie nachfolgend dargestellt:
// Load the Code
<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=ABCDEF"
type="text/javascript"></script>
<script src="http://www.google.com/uds/solutions/localsearch/gmlocalsearch.js"
type="text/javascript"></script>
// Load the Style Sheets
<style type="text/css">
@import url("http://www.google.com/uds/css/gsearch.css");
@import url("http://www.google.com/uds/solutions/localsearch/gmlocalsearch.css");
</style>
Wahlweise können Sie mithilfe des AJAX-Loader alle diese Module über den gemeinsamen Loader laden.
Nachdem Sie diese vorbereitenden Schritte ausgeführt haben, ist das Laden des Bedienelements an sich relativ einfach:
// create your map
var map = new GMap2(document.getElementById("map_canvas"));
// create a local search control and add it to your map
var lsc = new google.maps.LocalSearch();
map.addControl(new google.maps.LocalSearch());
Beispiel anzeigen (control-localsearch.html)
Weitere Informationen zum Bedienelement für die lokale Suche finden Sie in der Referenz zum Google AJAX Search-API.
Das Google Maps-API unterstützt die Datenformate KML und GeoRSS zur Anzeige geografischer Informationen. Sie können diese Datenformate einer Karte mithilfe des Objekts GGeoXml hinzufügen, dessen Konstruktor die URL einer öffentlich zugänglichen XML-Datei verwendet. GGeoXml-Ortsmarken werden als GMarker gerendert, während GGeoXml-Polylinien und -Polygone als Google Maps-API-Polylinien und -Polygone gerendert werden. <GroundOverlay>-Elemente in KML-Dateien werden als GGroundOverlay-Elemente auf der Karte gerendert.
GGeoXml-Objekte werden mithilfe der Methode addOverlay() zu einer Karte hinzugefügt. (Sie können sie mithilfe von removeOverlay() von der Karte entfernen.) Es werden KML- und GeoRSS-XML-Dateien unterstützt. Beachten Sie, dass GGeoXmlein modularisiertes Objekt in der Google Maps-API ist und erst bei seiner ersten Verwendung vollständig geladen wird. Rufen Sie daher dessen Konstruktor erst auf, nachdem die Seite vollständig geladen wurde. Dies wird in der Regel dadurch erreicht, dass der GGeoXml-Konstruktor innerhalb des onload-Handlers von <body> aufgerufen wird.
// The GGeoXml constructor takes a URL pointing to a KML or GeoRSS file.
// You add the GGeoXml object to the map as an overlay, and remove it as an overlay as well.
// The Maps API determines implicitly whether the file is a KML or GeoRSS file.
var map;
var geoXml;
function initialize() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("map_canvas"));
geoXml = new GGeoXml("http://mapgadgets.googlepages.com/cta.kml");
map.addControl(new GLargeMapControl());
map.setCenter(new GLatLng(41.875696,-87.624207), 11);
map.addControl(new GLargeMapControl());
map.addOverlay(geoXml);
}
}
GeoRSS-Beispiel anzeigen (geoxml-rss.html)
KML-Beispiele anzeigen (geoxml-kml.html)
Über das Google Maps-API können Sie Ihren Karten mithilfe des Objekts GTrafficOverlay, das die GOverlay-Schnittstelle implementiert, Verkehrsinformationen hinzufügen. Sie fügen Ihrer Karte anhand der Methode GMap2.addOverlay() Verkehrsinformationen hinzu. GTrafficOverlay verfügt über zwei Methoden (hide() und show()) zum Ein-/Ausblenden des Verkehrs-Overlays. Verkehrsinformationen werden nur für Städte angezeigt, für die dies unterstützt wird.
Wahlweise können Sie Optionen mithilfe des Objektliterals GTrafficOverlayOptions an den Konstruktor GTrafficOverlay übergeben.
// The GTrafficOverlay is unique in that only one object of that type
// should be added to a map. Adding multiple traffic overlays produces
// no added benefit.
var map;
var trafficInfo;
function initialize() {
map = new GMap2(document.getElementById("map_canvas"));
map.setCenter(new GLatLng(49.496675,-102.65625), 3);
var trafficOptions = {incidents:true};
trafficInfo = new GTrafficOverlay(trafficOptions);
map.addOverlay(trafficInfo);
}
Verkehrs-Beispiel anzeigen (trafficOverlay.html)
Die Möglichkeit zur Berechnung von Routen (mit verschiedenen Verkehrsmitteln) können Sie mithilfe des Objekts GDirections hinzufügen. Zum Anfordern und Empfangen von Anfahrtsergebnissen verwendet das Objekt GDirections entweder Abfrage-Strings (z. B. "New York, NY nach Chicago, IL") oder Angaben zur geografischen Breite/Länge (z. B. "40.712882, -73.967257 nach 41.943181,-87.770677"). Das Objekt GDirections unterstützt auch mehrteilige Routen mittels einer Reihe von Wegpunkten. Routen können auf einer Karte als Polylinienzeichung oder als Textbeschreibungen (z. B. "Biegen Sie nach rechts auf die Auffahrt Williamsburg Bridge ab") innerhalb eines <div>-Elements angezeigt werden. Es können auch beide Möglichkeiten gleichzeitig verwendet werden.
Zur Verwendung von Routen im Google Maps-API erstellen Sie ein Objekt des Typs GDirections und legen ein GMap2-Objekt und/oder <div> für dem Empfang und die Anzeige von Ergebnissen fest. Standardmäßig wird die Karte durch die zurückgegebene Route (bzw. Routen) zentriert und begrenzt, dies können Sie jedoch mit Parametern in einem GDirectionOptions-Objekt ändern.
Routen werden mit der Methode GDirections.load() angefordert. Diese Methode verwendet einen Abfrage-String und mehrere optionale GDirectionsOptions-Parameter. Die folgenden Optionen stehen zur Verfügung:
locale gibt die zum Zurückgeben der Ergebnisse verwendete Sprache an und überschreibt gegebenenfalls den hl-Parameter des Maps-API. Ist weder ein locale- noch ein hl-Parameter angegeben, wird die Standardsprache des Browsers verwendet.travelMode gibt die zur Berechnung der Ergebnisse zu verwendende Fortbewegungsmethode an.avoidHighways gibt an, dass bei der Berechnung von Routen Autobahnen zu vermeiden sind.getPolyline gibt an, dass das Routenobjekt Polyliniendaten zum Zeichnen der zurückgegebenen Route ausgeben soll. Standardmäßig gibt das Objekt GDirections nur Polyliniendaten zurück, wenn ein Kartenobjekt vorhanden ist, auf dem sie angezeigt werden können. Falls Sie für diesen Wert true festlegen und keine Karte angeben, sollten Sie die Polyliniendaten direkt verarbeiten.getSteps gibt an, dass das Routenobjekt Routen in Textform zurückgeben soll, auch wenn kein <div>-Feld zur Anzeige dieser Routen vorhanden ist. Falls Sie für diesen Wert true festlegen und kein Feld angeben, sollten Sie die Schrittdaten direkt verarbeiten.preserveViewport gibt an, dass die Karte nicht automatisch zentriert werden soll und dass nicht automatisch zur Ansichtsbegrenzung der zurückgegebenen Routen gezoomt werden soll. Stattdessen bleibt die Karte auf den aktuellen Darstellungsbereich zentriert.Standardmäßig wird davon ausgegangen, dass Anfahrtsbeschreibungen gewünscht werden, Sie können jedoch durch Übergeben von GTravelMode beim Aufrufen der Methode Directions.load() auch andere Fortbewegungsmethoden angeben. Die folgenden Fortbewegungsmethoden werden unterstützt:
G_TRAVEL_MODE_DRIVING gibt an, dass die standardmäßigen Anfahrtsbeschreibungen unter Verwendung des Straßennetzes zurückgegeben werden sollen.G_TRAVEL_MODE_WALKING fordern Sie Routen für Fußgänger unter Verwendung von Fußwegen und Bürgersteigen (sofern verfügbar) an.Hinweis: Walking directions may sometimes not include clear pedestrian paths, so walking directions are only supported if you have supplied a <div> in the GDirections constructor; this <div> is used to display a warning to the user in the returned turn-by-turn textual directions. Wird <div> nicht angegeben, wird bei Anforderung von Routen für Fußgängern ein Fehler zurückgegeben.
Wenn das GDirections-Objekt mit einem bereitgestellten GMap2-Objekt konstruiert wurde, enthalten die zurückgegebenen Routen ein Polylinien-Overlay. Wurde das GDirections-Objekt mit einem bereitgestellten <div>-Element konstruiert, enthalten die zurückgegebenen Routen ein GRoute-Objekt, das wiederum eine Reihe von GStep-Objekten enthält. (Wenn die Route aus Routen mit mehreren Punkten besteht, enthalten die zurückgegebenen Routen mehrere GRoute-Objekte, die jeweils aus einer Reihe von GStep-Objekten bestehen.)
Beachten Sie, dass das Routenobjekt nicht sofort mit diesen Rückgabeinformationen ausgefüllt wird. Daher definiert das GDirections-Objekt ein "load"-Ereignis, das Sie abfangen können, um diesen Status zu ermitteln.
Nachdem Routen zurückgegeben wurden, wird auf der Karte standardmäßig eine Polylinie angezeigt, die die Route darstellt. Routen in Textform werden innerhalb des zu diesem Zweck bereitgestellten <div>-Elements angezeigt. Das GDirections-Objekt speichert die Ergebnisse auch intern. Sie können sie anhand der Methode GDirections.getPolyline() und/oder GDirections.getRoute(i:Number) abrufen. Schritte innerhalb einer Route können mithilfe der Methode GRoute.getStep(i:Number) und die HTML-Zusammenfassung des jeweiligen Schritts mithilfe von GStep.getDescriptionHtml() abgerufen werden. (Weitere Informationen finden Sie unter Routen und Schritte weiter unten.)
Das GDirections-Objekt löst auch drei Ereignisse aus, die Sie abfangen können:
load": Dieses Ereignis wird ausgelöst, wenn ein Routenergebnis erfolgreich zurückgegeben wird, jedoch bevor der Karte/dem Feld Overlay-Elemente hinzugefügt wurden.addoverlay": Dieses Ereignis wird ausgelöst, nachdem der Karte und/oder DIV-Elementen die Polylinie und/oder Routenkomponenten in Textform hinzugefügt wurden.error": Dieses Ereignis wird ausgelöst, wenn eine Routenanforderung zu einem Fehler führt. Caller können mithilfe von GDirections.getStatus() nähere Informationen zu dem Fehler abrufen.
// Create a directions object and register a map and DIV to hold the
// resulting computed directions
var map;
var directionsPanel;
var directions;
function initialize() {
map = new GMap2(document.getElementById("map_canvas"));
directionsPanel = document.getElementById("my_textual_div");
map.setCenter(new GLatLng(49.496675,-102.65625), 3);
directions = new GDirections(map, directionsPanel);
directions.load("from: 500 Memorial Drive, Cambridge, MA to: 4 Yawkey Way, Boston, MA 02215 (Fenway Park)");
}
Beispiel anzeigen (directions-simple.html)
Das folgende Beispiel ist mit dem ersten identisch, mit der Ausnahme, dass die Routen durch Übergabe von G_TRAVEL_MODE_WALKING aufgerufen werden:
Beispiel anzeigen (directions-walking.html)
Das GDirections-Objekt unterstützt auch Routen mit mehreren Punkten, die mithilfe der Methode GDirections.loadFromWaypoints() konstruiert werden können. Diese Methode verwendet ein Array von Eingabeadressen oder Längen-/Breitenpunkten jeweils in Textform. Jeder einzelne Wegpunkt wird als separate Route berechnet und in einem separaten GRoute-Objekt zurückgegeben, das wiederum eine Reihe von GStep-Objekten enthält.
GRoute-Objekte speichern die Anzahl der Schritte (des Typs GStep) für diese Route, den Start- und End-Geocode für diese Route und weitere berechnete Informationen wie Streckenlänge, Dauer und die genaue geografische Länge und Breite des Endpunkts (diese Angabe kann sich vom End-Geocode unterscheiden, wenn sich der Geocode nicht auf einem Straßensegment befindet). Jedes GStep-Objekt enthält außerdem die Beschreibung für diesen Text (z. B. "Bei B3/Darmstädter Landstraße links abbiegen") sowie berechnete Informationen wie Streckenlänge, Dauer und die genaue geografische Länge und Breite.
Die vollständige Dokumentation zu den verschiedenen Objekten, Methoden und Ereignissen im Directions API-Paket finden Sie in der API-Referenz.